'use strict'; const common = require('../common'); // This test ensures that the timer callbacks are called in the order in which // they were created in the event of an unhandled exception in the domain. const domain = require('domain').create(); const assert = require('assert'); let first = false; domain.run(function() { setTimeout(() => { throw new Error('FAIL'); }, 1); setTimeout(() => { first = true; }, 1); setTimeout(() => { assert.strictEqual(first, true); }, 2); // Ensure that 2 ms have really passed let i = 1e6; while (i--); }); domain.once('error', common.mustCall((err) => { assert(err); assert.strictEqual(err.message, 'FAIL'); }));