summaryrefslogtreecommitdiff
path: root/test/parallel/test-promise-unhandled-throw-handler.js
blob: be441c2d34c6bdef0ac537bdb1a8492a0f32ded0 (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
// Flags: --unhandled-rejections=throw
'use strict';

const common = require('../common');
const Countdown = require('../common/countdown');
const assert = require('assert');

common.disableCrashOnUnhandledRejection();

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