summaryrefslogtreecommitdiff
path: root/test/parallel/test-promise-unhandled-warn.js
blob: f13e6d29e2f0879215a63a444ee42d1c22df076e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
// 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);