Внедрение таймера JavaScript

Я пытаюсь выяснить, как работают таймеры JavaScript. В частности, независимо от того, выполняется ли функция таймера сразу по истечении таймера или вместо этого, когда движок JavaScript находится в каком-то незанятом состоянии.

Например, если движок JavaScript выполняет блок кода и таймер отключается, выполнение блока кода прерывается и вызывает функцию таймера. Или механизм JavaScript ждет, пока он не вернется в какое-то состояние ожидания, прежде чем он вызовет функцию таймера?

Спасибо,

AJ