summaryrefslogtreecommitdiff
path: root/ext/node
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2023-05-24 15:40:41 +0200
committerGitHub <noreply@github.com>2023-05-24 15:40:41 +0200
commit0bb5bbc7a0ff7565a4c7fa4ebc8c69e02f76e6b5 (patch)
treea5ab85f34d7984428288cb8d221cf09851d333bd /ext/node
parent787e1f0f92e81f025ec0dfdce2acff15900267fc (diff)
fix(node): fire 'unhandledrejection' event when using node: or npm: imports (#19235)
This commit fixes emitting "unhandledrejection" event when there are "node:" or "npm:" imports. Before this commit the Node "unhandledRejection" event was emitted using a regular listener for Web "unhandledrejection" event. This listener was installed before any user listener had a chance to be installed which effectively prevent emitting "unhandledrejection" events to user code. Closes https://github.com/denoland/deno/issues/16928
Diffstat (limited to 'ext/node')
-rw-r--r--ext/node/polyfills/process.ts8
1 files changed, 4 insertions, 4 deletions
diff --git a/ext/node/polyfills/process.ts b/ext/node/polyfills/process.ts
index d2f220734..2dc10d7b1 100644
--- a/ext/node/polyfills/process.ts
+++ b/ext/node/polyfills/process.ts
@@ -716,9 +716,9 @@ internals.__bootstrapNodeProcess = function (
core.setMacrotaskCallback(runNextTicks);
enableNextTick();
- // TODO(bartlomieju): this is buggy, see https://github.com/denoland/deno/issues/16928
- // We should use a specialized API in 99_main.js instead
- globalThis.addEventListener("unhandledrejection", (event) => {
+ // Install special "unhandledrejection" handler, that will be called
+ // last.
+ internals.nodeProcessUnhandledRejectionCallback = (event) => {
if (process.listenerCount("unhandledRejection") === 0) {
// The Node.js default behavior is to raise an uncaught exception if
// an unhandled rejection occurs and there are no unhandledRejection
@@ -734,7 +734,7 @@ internals.__bootstrapNodeProcess = function (
event.preventDefault();
process.emit("unhandledRejection", event.reason, event.promise);
- });
+ };
globalThis.addEventListener("error", (event) => {
if (process.listenerCount("uncaughtException") > 0) {