1'use strict'; 2 3const common = require('../common'); 4const assert = require('assert'); 5const domain = require('domain'); 6const fs = require('fs'); 7const isEnumerable = Function.call.bind(Object.prototype.propertyIsEnumerable); 8 9process.on('warning', common.mustNotCall()); 10 11{ 12 const d = new domain.Domain(); 13 14 d.on('error', common.mustCall((err) => { 15 assert.strictEqual(err.message, 'foobar'); 16 assert.strictEqual(err.domain, d); 17 assert.strictEqual(isEnumerable(err, 'domain'), false); 18 assert.strictEqual(err.domainEmitter, undefined); 19 assert.strictEqual(err.domainBound, undefined); 20 assert.strictEqual(err.domainThrown, true); 21 })); 22 23 d.run(common.mustCall(() => { 24 process.nextTick(common.mustCall(() => { 25 const i = setInterval(common.mustCall(() => { 26 clearInterval(i); 27 setTimeout(common.mustCall(() => { 28 fs.stat('this file does not exist', common.mustCall((er, stat) => { 29 throw new Error('foobar'); 30 })); 31 }), 1); 32 }), 1); 33 })); 34 })); 35} 36