summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShelley Vohr <shelley.vohr@gmail.com>2020-07-15 18:45:10 -0700
committerMyles Borins <mylesborins@github.com>2020-07-27 18:08:27 -0400
commitbd9ab00acd9d97d99b181010b619da1de06ccd94 (patch)
tree7482a43d45bb46652dd759526d7b83a7684c1c59
parent4b4eb5f1308781beb3dcdd3469298f26ca9f868d (diff)
downloadnode-new-bd9ab00acd9d97d99b181010b619da1de06ccd94.tar.gz
src: allow preventing SetPromiseRejectCallback
PR-URL: https://github.com/nodejs/node/pull/34387 Reviewed-By: Gus Caplan <me@gus.host> Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Tobias Nießen <tniessen@tnie.de>
-rw-r--r--src/api/environment.cc8
-rw-r--r--src/node.h3
2 files changed, 7 insertions, 4 deletions
diff --git a/src/api/environment.cc b/src/api/environment.cc
index fdfd257aec..a18c21fa79 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 25f9f9b873..71273d6db9 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 {