Alexey M
как так не успевает, основной же код синхронно выполняется
дошел до setTimeout, поставил колбэк в очередь,
дошел до setImmidiate, поставил колбэк в другую очередь
синхронный код закончился и запускается eventLoop
первая фаза таймеры, потом через несколько фаз будет фаза check
или я что-то не допонимаю?
Надо разбираться что значит 'поставил таймер в очередь'
Там происходит создание таймера, инициализация. Она может происходить в служебном треде (это только предположение), и тогда к началу нового тика что-то может быть не завершено
Самый правильный вариант - полезть в исходники и посмотреть что происходит при setTimeout