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
This commit is contained in:
Bartek Iwańczuk 2023-05-24 15:40:41 +02:00 committed by GitHub
parent 787e1f0f92
commit 0bb5bbc7a0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 80 additions and 5 deletions

View file

@ -5,6 +5,7 @@ use std::process::Stdio;
use std::time::Duration;
use std::time::Instant;
use test_util as util;
use util::env_vars_for_npm_tests;
util::unit_test_factory!(
node_unit_test,
@ -157,3 +158,20 @@ fn node_unit_test(test: String) {
assert!(status.success());
}
// Regression test for https://github.com/denoland/deno/issues/16928
itest!(unhandled_rejection_web {
args: "run -A node/unhandled_rejection_web.ts",
output: "node/unhandled_rejection_web.ts.out",
envs: env_vars_for_npm_tests(),
http_server: true,
});
// Ensure that Web `onunhandledrejection` is fired before
// Node's `process.on('unhandledRejection')`.
itest!(unhandled_rejection_web_process {
args: "run -A node/unhandled_rejection_web_process.ts",
output: "node/unhandled_rejection_web_process.ts.out",
envs: env_vars_for_npm_tests(),
http_server: true,
});