%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream
'use strict'; // This test makes sure that when throwing from within a timer's callback, // its active domain at the time of the throw is not the process' active domain // for the next timers that need to be processed on the same turn of the event // loop. const common = require('../common'); const assert = require('assert'); const domain = require('domain'); // Use the same timeout value so that both timers' callbacks are called during // the same invocation of the underlying native timer's callback (listOnTimeout // in lib/timers.js). setTimeout(err, 50); setTimeout(common.mustCall(secondTimer), 50); function err() { const d = domain.create(); d.on('error', handleDomainError); d.run(err2); function err2() { // This function doesn't exist, and throws an error as a result. err3(); // eslint-disable-line no-undef } function handleDomainError(e) { assert.strictEqual(e.domain, d); // Domains' error handlers are called outside of their domain's context, so // we're not expecting any active domain here. assert.strictEqual(process.domain, undefined); } } function secondTimer() { // secondTimer was scheduled before any domain had been created, so its // callback should not have any active domain set when it runs. if (process.domain !== null) { console.log('process.domain should be null in this timer callback, but is:', process.domain); // Do not use assert here, as it throws errors and if a domain with an error // handler is active, then asserting wouldn't make the test fail. process.exit(1); } }