Alexey M
разве setTimeout( ..., 0)
не должен выполнится первым всегда? т.к. он выполняется в фазе timers, которая идет первой в eventLoop?
Видимо таймер не успевает сработать (инициализироваться, стать в очередь или что-то ещё) до того, как начинается новый тик