summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibJS/Runtime/PromiseJobs.cpp
diff options
context:
space:
mode:
authorLinus Groh <mail@linusgroh.de>2021-11-14 01:07:10 +0000
committerLinus Groh <mail@linusgroh.de>2021-11-14 15:27:46 +0000
commit878668efc9006b590e7ef6ef0c7a0d99e6a09a90 (patch)
tree62196fb3ba29b181194c20970140cd787e6f15cf /Userland/Libraries/LibJS/Runtime/PromiseJobs.cpp
parent194d90dc7287270594a6adb16547fc4d668732f7 (diff)
downloadserenity-878668efc9006b590e7ef6ef0c7a0d99e6a09a90.zip
LibJS: Call [[Reject]] in PromiseResolveThenableJob after abrupt then()
Diffstat (limited to 'Userland/Libraries/LibJS/Runtime/PromiseJobs.cpp')
-rw-r--r--Userland/Libraries/LibJS/Runtime/PromiseJobs.cpp7
1 files changed, 3 insertions, 4 deletions
diff --git a/Userland/Libraries/LibJS/Runtime/PromiseJobs.cpp b/Userland/Libraries/LibJS/Runtime/PromiseJobs.cpp
index 99d7eb1354..bad5a263d2 100644
--- a/Userland/Libraries/LibJS/Runtime/PromiseJobs.cpp
+++ b/Userland/Libraries/LibJS/Runtime/PromiseJobs.cpp
@@ -138,16 +138,15 @@ ThrowCompletionOr<Value> PromiseResolveThenableJob::call()
// c. If thenCallResult is an abrupt completion, then
if (then_call_result.is_error()) {
- auto error = then_call_result.throw_completion().value();
vm.clear_exception();
vm.stop_unwind();
// i. Let status be Call(resolvingFunctions.[[Reject]], undefined, ยซ thenCallResult.[[Value]] ยป).
- // FIXME: Actually do this... not sure why we don't? :yakfused:
+ dbgln_if(PROMISE_DEBUG, "[PromiseResolveThenableJob @ {}]: then_call_result is an abrupt completion, calling reject function with value {}", this, then_call_result.throw_completion().value());
+ auto status = JS::call(global_object, &reject_function, js_undefined(), then_call_result.throw_completion().value());
// ii. Return Completion(status).
- dbgln_if(PROMISE_DEBUG, "[PromiseResolveThenableJob @ {}]: An exception was thrown, returning error {}", this, error);
- return error;
+ return status;
}
// d. Return Completion(thenCallResult).