diff --git a/lib/internal/process/promises.js b/lib/internal/process/promises.js index 0ccea4d05a87f5..8bb2062b3a9f0f 100644 --- a/lib/internal/process/promises.js +++ b/lib/internal/process/promises.js @@ -14,8 +14,6 @@ const { promiseRejectEvents: { kPromiseRejectWithNoHandler, kPromiseHandlerAddedAfterReject, - kPromiseRejectAfterResolved, - kPromiseResolveAfterResolved, }, setPromiseRejectCallback, } = internalBinding('task_queue'); @@ -161,6 +159,8 @@ function promiseRejectHandler(type, promise, reason) { if (unhandledRejectionsMode === undefined) { unhandledRejectionsMode = getUnhandledRejectionsMode(); } + // kPromiseRejectAfterResolved and kPromiseResolveAfterResolved are + // filtered out in C++ (src/node_task_queue.cc) and never reach JS. switch (type) { case kPromiseRejectWithNoHandler: // 0 unhandledRejection(promise, reason); @@ -168,14 +168,6 @@ function promiseRejectHandler(type, promise, reason) { case kPromiseHandlerAddedAfterReject: // 1 handledRejection(promise); break; - case kPromiseRejectAfterResolved: // 2 - // Do nothing in this case. Previous we would emit a multipleResolves - // event but that was deprecated then later removed. - break; - case kPromiseResolveAfterResolved: // 3 - // Do nothing in this case. Previous we would emit a multipleResolves - // event but that was deprecated then later removed. - break; } } diff --git a/src/node_task_queue.cc b/src/node_task_queue.cc index f1c53c44f201b2..c96e2c70e2ed07 100644 --- a/src/node_task_queue.cc +++ b/src/node_task_queue.cc @@ -19,9 +19,7 @@ using v8::FunctionCallbackInfo; using v8::Isolate; using v8::Just; using v8::kPromiseHandlerAddedAfterReject; -using v8::kPromiseRejectAfterResolved; using v8::kPromiseRejectWithNoHandler; -using v8::kPromiseResolveAfterResolved; using v8::Local; using v8::Maybe; using v8::Number; @@ -53,7 +51,11 @@ void PromiseRejectCallback(PromiseRejectMessage message) { Environment* env = Environment::GetCurrent(isolate); - if (env == nullptr || !env->can_call_into_js()) return; + if (env == nullptr || !env->can_call_into_js() || + (event != kPromiseRejectWithNoHandler && + event != kPromiseHandlerAddedAfterReject)) { + return; + } Local callback = env->promise_reject_callback(); // The promise is rejected before JS land calls SetPromiseRejectCallback @@ -77,10 +79,6 @@ void PromiseRejectCallback(PromiseRejectMessage message) { "rejections", "unhandled", unhandledRejections, "handledAfter", rejectionsHandledAfter); - } else if (event == kPromiseResolveAfterResolved) { - value = message.GetValue(); - } else if (event == kPromiseRejectAfterResolved) { - value = message.GetValue(); } else { return; } @@ -173,8 +171,6 @@ static void Initialize(Local target, Local events = Object::New(isolate); NODE_DEFINE_CONSTANT(events, kPromiseRejectWithNoHandler); NODE_DEFINE_CONSTANT(events, kPromiseHandlerAddedAfterReject); - NODE_DEFINE_CONSTANT(events, kPromiseResolveAfterResolved); - NODE_DEFINE_CONSTANT(events, kPromiseRejectAfterResolved); target->Set(env->context(), FIXED_ONE_BYTE_STRING(isolate, "promiseRejectEvents"),