I have this function.
function runInDomain(func) {
const d = domain.create();
d.on('error', (er) => {
console.log(`error on: ${func.name}`, er, er.stack);
// just ignore
});
console.log(`run in domain: ${func.name}`);
d.run(func);
}
And run it with this,
function bar() {
console.log('bar');
throw false;
}
setInterval(() => { runInDomain(bar) }, 1000); // 'bar' runs only one time.
function 'bar' runs only one time:
$ node test.js
run in domain: bar
bar
error on: bar false undefined
but with this,
setInterval(() => { setImmediate(() => { runInDomain(bar) }) }, 1000); // it works!
It works fine:
$ node test.js
run in domain: bar
bar
error on: bar false undefined
run in domain: bar
bar
error on: bar false undefined
run in domain: bar
bar
error on: bar false undefined
....
I don't know why the first thing doesn't work but the second one does. Any reason?