| // 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); |