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?
 
    