summaryrefslogtreecommitdiff
path: root/runtime/js
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/js')
-rw-r--r--runtime/js/99_main.js16
1 files changed, 16 insertions, 0 deletions
diff --git a/runtime/js/99_main.js b/runtime/js/99_main.js
index 4644d2d08..6c5ca3b59 100644
--- a/runtime/js/99_main.js
+++ b/runtime/js/99_main.js
@@ -344,6 +344,8 @@ function runtimeStart(
}
core.setUnhandledPromiseRejectionHandler(processUnhandledPromiseRejection);
+core.setHandledPromiseRejectionHandler(processRejectionHandled);
+
// Notification that the core received an unhandled promise rejection that is about to
// terminate the runtime. If we can handle it, attempt to do so.
function processUnhandledPromiseRejection(promise, reason) {
@@ -377,6 +379,20 @@ function processUnhandledPromiseRejection(promise, reason) {
return false;
}
+function processRejectionHandled(promise, reason) {
+ const rejectionHandledEvent = new event.PromiseRejectionEvent(
+ "rejectionhandled",
+ { promise, reason },
+ );
+
+ // Note that the handler may throw, causing a recursive "error" event
+ globalThis_.dispatchEvent(rejectionHandledEvent);
+
+ if (typeof internals.nodeProcessRejectionHandledCallback !== "undefined") {
+ internals.nodeProcessRejectionHandledCallback(rejectionHandledEvent);
+ }
+}
+
let hasBootstrapped = false;
// Delete the `console` object that V8 automaticaly adds onto the global wrapper
// object on context creation. We don't want this console object to shadow the