summaryrefslogtreecommitdiff
path: root/tests/node_compat/test/parallel/test-promise-unhandled-throw-handler.js
diff options
context:
space:
mode:
Diffstat (limited to 'tests/node_compat/test/parallel/test-promise-unhandled-throw-handler.js')
-rw-r--r--tests/node_compat/test/parallel/test-promise-unhandled-throw-handler.js43
1 files changed, 43 insertions, 0 deletions
diff --git a/tests/node_compat/test/parallel/test-promise-unhandled-throw-handler.js b/tests/node_compat/test/parallel/test-promise-unhandled-throw-handler.js
new file mode 100644
index 000000000..a911f096a
--- /dev/null
+++ b/tests/node_compat/test/parallel/test-promise-unhandled-throw-handler.js
@@ -0,0 +1,43 @@
+// deno-fmt-ignore-file
+// deno-lint-ignore-file
+
+// Copyright Joyent and Node contributors. All rights reserved. MIT license.
+// Taken from Node 18.12.1
+// This file is automatically generated by `tools/node_compat/setup.ts`. Do not modify this file manually.
+
+// Flags: --unhandled-rejections=throw
+'use strict';
+
+const common = require('../common');
+const Countdown = require('../common/countdown');
+const assert = require('assert');
+
+// Verify that the unhandledRejection handler prevents triggering
+// uncaught exceptions
+
+const err1 = new Error('One');
+
+const errors = [err1, null];
+
+const ref = new Promise(() => {
+ throw err1;
+});
+// Explicitly reject `null`.
+Promise.reject(null);
+
+process.on('warning', common.mustNotCall('warning'));
+process.on('rejectionHandled', common.mustNotCall('rejectionHandled'));
+process.on('exit', assert.strictEqual.bind(null, 0));
+process.on('uncaughtException', common.mustNotCall('uncaughtException'));
+
+const timer = setTimeout(() => console.log(ref), 1000);
+
+const counter = new Countdown(2, () => {
+ clearTimeout(timer);
+});
+
+process.on('unhandledRejection', common.mustCall((err) => {
+ counter.dec();
+ const knownError = errors.shift();
+ assert.deepStrictEqual(err, knownError);
+}, 2));