'use strict'; // Regression test for https://github.com/nodejs/node/issues/13237 const common = require('../common'); const assert = require('assert'); if (!common.isMainThread) common.skip('Worker bootstrapping works differently -> different timing'); const async_hooks = require('async_hooks'); const seenEvents = []; const p = new Promise((resolve) => resolve(1)); p.then(() => seenEvents.push('then')); const hooks = async_hooks.createHook({ init: common.mustNotCall(), before: common.mustCall((id) => { assert.ok(id > 1); seenEvents.push('before'); }), after: common.mustCall((id) => { assert.ok(id > 1); seenEvents.push('after'); hooks.disable(); }) }); setImmediate(() => { assert.deepStrictEqual(seenEvents, ['before', 'then', 'after']); }); hooks.enable(); // After `setImmediate` in order to not catch its init event.