1'use strict'; 2const common = require('../common'); 3const assert = require('assert'); 4const { promiseHooks } = require('v8'); 5 6const expected = []; 7 8function testHook(name) { 9 const hook = promiseHooks[name]; 10 const error = new Error(`${name} error`); 11 12 const stop = hook(common.mustCall(() => { 13 stop(); 14 throw error; 15 })); 16 17 expected.push(error); 18} 19 20process.on('uncaughtException', common.mustCall((received) => { 21 assert.strictEqual(received, expected.shift()); 22}, 4)); 23 24testHook('onInit'); 25testHook('onSettled'); 26testHook('onBefore'); 27testHook('onAfter'); 28 29const stop = promiseHooks.onInit(common.mustCall(2)); 30 31Promise.resolve().then(stop); 32