Исправил, спасибо
async функції це просто синтаксичний цукор для промісів
Запис:
setTimeout(async () => { console.log('timeout') Promise.resolve() .then(() => console.log('promise')); await asyncFoo(); process.nextTick(() => console.log('process.nextTick()')); });
Це те саме що:
setTimeout(() => { Promise.resolve() .then(() => { console.log('timeout'); Promise.resolve() .then(() => console.log('promise')); return asyncFoo(); }) .then(() => { process.nextTick(() => console.log('process.nextTick()')); }); });
EventLoop не будет ждать на колбек чтения файла, потому что очередь check непустая, именно поэтому он и не будет выполнен на этой фазе цикла