0
0
mirror of https://github.com/nodejs/node.git synced 2024-11-21 21:19:50 +01:00
nodejs/test/parallel/test-domain-top-level-error-handler-clears-stack.js
Rich Trott f593f9e9ef test: adjust comments for upcoming lint rule
Enforce `//` for multiline comments. Some tests mixed and matched, and
at least one did so in a (to me) surprising way.

PR-URL: https://github.com/nodejs/node/pull/35485
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
2020-10-07 04:36:02 -07:00

32 lines
1.1 KiB
JavaScript

'use strict';
const common = require('../common');
const domain = require('domain');
// Make sure that the domains stack is cleared after a top-level domain
// error handler exited gracefully.
const d = domain.create();
d.on('error', common.mustCall(() => {
// Scheduling a callback with process.nextTick _could_ enter a _new_ domain,
// but domain's error handlers are called outside of their domain's context.
// So there should _no_ domain on the domains stack if the domains stack was
// cleared properly when the domain error handler was called.
process.nextTick(() => {
if (domain._stack.length !== 0) {
// Do not use assert to perform this test: this callback runs in a
// different callstack as the original process._fatalException that
// handled the original error, thus throwing here would trigger another
// call to process._fatalException, and so on recursively and
// indefinitely.
console.error('domains stack length should be 0, but instead is:',
domain._stack.length);
process.exit(1);
}
});
}));
d.run(() => {
throw new Error('Error from domain');
});