function iter(num) { if(num > 5) return; setImmediate(() => { console.log('SetImmediate'); }); process.nextTick(() => { console.log(`NextTick, iteration ${num}`); iter(num + 1); }); } iter(0); // NextTick, iteration 0 // NextTick, iteration 1 // NextTick, iteration 2 // NextTick, iteration 3 // NextTick, iteration 4 // NextTick, iteration 5 // SetImmediate // SetImmediate // SetImmediate // SetImmediate // SetImmediate // SetImmediate