'use strict'; const common = require('../common'); const assert = require('assert'); const { promiseHooks } = require('v8'); const expected = []; function testHook(name) { const hook = promiseHooks[name]; const error = new Error(`${name} error`); const stop = hook(common.mustCall(() => { stop(); throw error; })); expected.push(error); } process.on('uncaughtException', common.mustCall((received) => { assert.strictEqual(received, expected.shift()); }, 4)); testHook('onInit'); testHook('onSettled'); testHook('onBefore'); testHook('onAfter'); const stop = promiseHooks.onInit(common.mustCall(2)); Promise.resolve().then(stop);