mirror of
https://github.com/nodejs/node.git
synced 2024-11-21 21:19:50 +01:00
64c4b551ba
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>
42 lines
1.1 KiB
JavaScript
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);
|