| 'use strict'; |
| |
| const common = require('../common'); |
| const domain = require('domain'); |
| |
| // Make sure that when an error is thrown from a nested domain, its error |
| // handler runs outside of that domain, but within the context of any parent |
| // domain. |
| |
| const d = domain.create(); |
| const d2 = domain.create(); |
| |
| d2.on('error', common.mustCall((err) => { |
| if (domain._stack.length !== 1) { |
| console.error('domains stack length should be 1 but is %d', |
| domain._stack.length); |
| process.exit(1); |
| } |
| |
| if (process.domain !== d) { |
| console.error('active domain should be %j but is %j', d, process.domain); |
| process.exit(1); |
| } |
| |
| process.nextTick(() => { |
| if (domain._stack.length !== 1) { |
| console.error('domains stack length should be 1 but is %d', |
| domain._stack.length); |
| process.exit(1); |
| } |
| |
| if (process.domain !== d) { |
| console.error('active domain should be %j but is %j', d, |
| process.domain); |
| process.exit(1); |
| } |
| }); |
| })); |
| |
| d.run(() => { |
| d2.run(() => { |
| throw new Error('oops'); |
| }); |
| }); |