diff --git a/src/api/environment.cc b/src/api/environment.cc index fdfd257aec12f5..a18c21fa797422 100644 --- a/src/api/environment.cc +++ b/src/api/environment.cc @@ -239,9 +239,11 @@ void SetIsolateMiscHandlers(v8::Isolate* isolate, const IsolateSettings& s) { s.allow_wasm_code_generation_callback : AllowWasmCodeGenerationCallback; isolate->SetAllowWasmCodeGenerationCallback(allow_wasm_codegen_cb); - auto* promise_reject_cb = s.promise_reject_callback ? - s.promise_reject_callback : task_queue::PromiseRejectCallback; - isolate->SetPromiseRejectCallback(promise_reject_cb); + if ((s.flags & SHOULD_NOT_SET_PROMISE_REJECTION_CALLBACK) == 0) { + auto* promise_reject_cb = s.promise_reject_callback ? + s.promise_reject_callback : task_queue::PromiseRejectCallback; + isolate->SetPromiseRejectCallback(promise_reject_cb); + } if (s.flags & DETAILED_SOURCE_POSITIONS_FOR_PROFILING) v8::CpuProfiler::UseDetailedSourcePositionsForProfiling(isolate); diff --git a/src/node.h b/src/node.h index 25f9f9b873cee3..71273d6db9c6ed 100644 --- a/src/node.h +++ b/src/node.h @@ -333,7 +333,8 @@ class NODE_EXTERN MultiIsolatePlatform : public v8::Platform { enum IsolateSettingsFlags { MESSAGE_LISTENER_WITH_ERROR_LEVEL = 1 << 0, - DETAILED_SOURCE_POSITIONS_FOR_PROFILING = 1 << 1 + DETAILED_SOURCE_POSITIONS_FOR_PROFILING = 1 << 1, + SHOULD_NOT_SET_PROMISE_REJECTION_CALLBACK = 1 << 2 }; struct IsolateSettings {