diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-async-generator-prototype.c b/jerry-core/ecma/builtin-objects/ecma-builtin-async-generator-prototype.c
index fe5d4fcf2e..0b2128987b 100644
--- a/jerry-core/ecma/builtin-objects/ecma-builtin-async-generator-prototype.c
+++ b/jerry-core/ecma/builtin-objects/ecma-builtin-async-generator-prototype.c
@@ -111,7 +111,18 @@ ecma_builtin_async_generator_prototype_dispatch_routine (uint8_t builtin_routine
if (executable_object_p == NULL)
{
- return ecma_raise_type_error (ECMA_ERR_ARGUMENT_THIS_NOT_ASYNC_GENERATOR);
+ const lit_utf8_byte_t *msg_p = ecma_get_error_utf8 (ECMA_ERR_ARGUMENT_THIS_NOT_ASYNC_GENERATOR);
+ lit_utf8_size_t msg_size = ecma_get_error_size (ECMA_ERR_ARGUMENT_THIS_NOT_ASYNC_GENERATOR);
+ ecma_string_t *error_msg_p = ecma_new_ecma_string_from_ascii (msg_p, msg_size);
+
+ ecma_object_t *type_error_obj_p = ecma_new_standard_error (JERRY_ERROR_TYPE, error_msg_p);
+ ecma_deref_ecma_string (error_msg_p);
+
+ ecma_value_t promise = ecma_op_create_promise_object (ECMA_VALUE_EMPTY, ECMA_VALUE_UNDEFINED, NULL);
+ ecma_reject_promise (promise, ecma_make_object_value (type_error_obj_p));
+ ecma_deref_object (type_error_obj_p);
+
+ return promise;
}
if (executable_object_p->extended_object.u.cls.u2.executable_obj_flags & ECMA_EXECUTABLE_OBJECT_COMPLETED)
diff --git a/tests/jerry/es.next/function-async-gen1.js b/tests/jerry/es.next/function-async-gen1.js
index ccec5e3ca2..4fa7be0c0e 100644
--- a/tests/jerry/es.next/function-async-gen1.js
+++ b/tests/jerry/es.next/function-async-gen1.js
@@ -39,6 +39,19 @@ function check_rejected(p, value)
})
}
+
+function check_type_error(p)
+{
+ assert(p instanceof Promise)
+
+ p.then(function(v) {
+ assert(false)
+ }, function(v) {
+ assert(v instanceof TypeError);
+ successCount++
+ })
+}
+
// Test 1
var gen, r, o
@@ -65,6 +78,9 @@ check_fulfilled(gen.next("Test2"), 1.5, false)
check_fulfilled(gen.next(2.5), o, true)
check_fulfilled(gen.next(), undefined, true)
check_fulfilled(gen.next(), undefined, true)
+check_type_error(gen.next.call(undefined))
+check_type_error(gen.throw.call(undefined))
+check_type_error(gen.return.call(undefined))
r(1)
@@ -220,7 +236,7 @@ check_fulfilled(gen.next(), undefined, true)
// END
function __checkAsync() {
- assert(successCount === 29)
+ assert(successCount === 32)
assert(state === 4)
assert(state2 === 4)
}
diff --git a/tests/test262-esnext-excludelist.xml b/tests/test262-esnext-excludelist.xml
index 7e8e0daf7c..1f0044f33b 100644
--- a/tests/test262-esnext-excludelist.xml
+++ b/tests/test262-esnext-excludelist.xml
@@ -6465,15 +6465,9 @@
-
-
-
-
-
-