diff --git a/Jint.Tests.Test262/Test262Test.cs b/Jint.Tests.Test262/Test262Test.cs index 3561669fb9..d41d6dad2c 100644 --- a/Jint.Tests.Test262/Test262Test.cs +++ b/Jint.Tests.Test262/Test262Test.cs @@ -51,7 +51,11 @@ private static Engine BuildTestExecutor(Test262File file, Test262AgentManager? a // Capture Test262 async test markers from $DONE via doneprintHandle.js if (message.StartsWith("Test262:AsyncTest", StringComparison.Ordinal)) { - _asyncResult = message; + // AsyncTestFailure takes priority - once recorded, never overwrite with AsyncTestComplete + if (_asyncResult is null || !_asyncResult.StartsWith("Test262:AsyncTestFailure:", StringComparison.Ordinal)) + { + _asyncResult = message; + } } return message; })); diff --git a/Jint/AstExtensions.cs b/Jint/AstExtensions.cs index 55ab488298..0dbfa72940 100644 --- a/Jint/AstExtensions.cs +++ b/Jint/AstExtensions.cs @@ -79,7 +79,8 @@ or NodeType.FunctionExpression or NodeType.YieldExpression or NodeType.TemplateLiteral or NodeType.ArrayExpression - or NodeType.ObjectExpression) + or NodeType.ObjectExpression + or NodeType.AwaitExpression) { var context = engine._activeEvaluationContext ?? new EvaluationContext(engine); var result = JintExpression.Build(expression).GetValue(context); diff --git a/Jint/Native/Function/ScriptFunction.cs b/Jint/Native/Function/ScriptFunction.cs index 90554e2073..3b3f3dda2d 100644 --- a/Jint/Native/Function/ScriptFunction.cs +++ b/Jint/Native/Function/ScriptFunction.cs @@ -47,7 +47,8 @@ internal ScriptFunction( if (!function.Strict && function.Function is not ArrowFunctionExpression - && !function.Function.Generator) + && !function.Function.Generator + && !function.Function.Async) { SetProperty(KnownKeys.Arguments, new GetSetPropertyDescriptor.ThrowerPropertyDescriptor(engine, PropertyFlag.Configurable)); SetProperty(KnownKeys.Caller, new PropertyDescriptor(Undefined, PropertyFlag.Configurable));