Scheduling the timer before the work
schedule after
burn(6) then setTimeout(step, 0)
work 6ms
wait 4.5ms
work 6ms
wait 4.5ms
work 6ms
wait 4.5ms
31.5ms
schedule first
setTimeout(step, 0) then burn(6)
work 6ms
work 6ms
work 6ms
wait 4.5ms
wait 4.5ms
wait 4.5ms
18ms
0ms102030
The work is identical in both lanes. Only the waiting moved: in the second, each timer's delay elapses underneath the chunk that was going to run anyway.
Three chunks, drawn to scale against the axis, using the measured 4.5ms clamp.