Последовательность выполнения обозначил в комментариях
console.log('console.log 1')//1
setTimeout(() => console.log('setTimeout'), 0)//3
setImmediate(() => console.log('setImmediate'))//4
console.log('console.log 2')//2
и другой пример:
console.log('console.log 1')//1
fs.readFile('./views/about.html', 'utf8', (err,data) => {
setTimeout(() => console.log('setTimeout'), 0)//4
setImmediate(() => console.log('setImmediate'))//3
})
console.log('console.log 2')//2
В первом случае таймаут быстрее потому что в цикле событий таймеры имеют приоритет над циклом "Check", но и как бы setImmediate должен иметь преимущество над setTimeout. В общем, помогите разобраться, почему так.