0
0
mirror of https://github.com/nodejs/node.git synced 2024-11-21 21:19:50 +01:00
nodejs/test/parallel/test-promise-unhandled-warn.js
Benjamin Gruenbaum 64c4b551ba
process: unhandledRejection support more errors
Support cross realm errors where `instanceof` errors in our
unhandledRejection warning to print better error with stack traces.

PR-URL: https://github.com/nodejs/node/pull/41682
Refs: https://github.com/nodejs/node/issues/41676
Reviewed-By: Nitzan Uziely <linkgoron@gmail.com>
Reviewed-By: Tierney Cyren <hello@bnb.im>
2022-01-28 19:11:26 +00:00

42 lines
1.1 KiB
JavaScript

// Flags: --unhandled-rejections=warn
'use strict';
const common = require('../common');
const assert = require('assert');
// Verify that ignoring unhandled rejection works fine and that no warning is
// logged.
new Promise(() => {
throw new Error('One');
});
Promise.reject('test');
function lookForMeInStackTrace() {
Promise.reject(new class ErrorLike {
constructor() {
Error.captureStackTrace(this);
this.message = 'ErrorLike';
}
}());
}
lookForMeInStackTrace();
// Unhandled rejections trigger two warning per rejection. One is the rejection
// reason and the other is a note where this warning is coming from.
process.on('warning', common.mustCall((reason) => {
if (reason.message.includes('ErrorLike')) {
assert.match(reason.stack, /lookForMeInStackTrace/);
}
}, 6));
process.on('uncaughtException', common.mustNotCall('uncaughtException'));
process.on('rejectionHandled', common.mustCall(3));
process.on('unhandledRejection', (reason, promise) => {
// Handle promises but still warn!
promise.catch(() => {});
});
setTimeout(common.mustCall(), 2);