Как работает process.nextTick

Читал описание про process.nextTick - хочу убедиться правильно ли я понял,

В сравнении возьмем пример работы event loop в браузере - в данный момент времени в нем существует очередь из 3х задач
event loop:

  • task 1(уже в процессе выполнения)
    task 2
    task 3

При срабатывании setTimeout(setTimeoutTask, 0); эта запись попадет в очередь задач event loop и получаем следующую очередь

  • task1(уже в процессе выполнения)
    task2
    task3
    setTimeoutTask

А теперь сравним это с работой process.nextTick - в ноде существует очередь задач

  • nodeTask1(уже в процессе выполнения)
    nodeTask2
    nodeTask3

И тут срабатывает process.nextTick(nextTickTask); я правильно понимаю что сейчас эта задача перейдет на позицию в event loop следующую после текущей задачи находящейся в выполнении и поместится во 2ю позицию так:

  • nodeTask1(уже в процессе выполнения)
    nextTickTask
    nodeTask2
    nodeTask3

Верно ли я описал работу process.nextTick ?

Тут могут крыться нюансы: в браузере нет понятия очереди. Scheduler (планировщик) принимает решение о том какой код из отложенных будет выполняться. В зависимости от того как были отложены tas2, task3, новая setTimeoutTask может стать между task2 и task3. В общем твои размышления верны.

Хочу уточнить насчет очереди выполнения. Очередь выполнения задач - это следствие (а не та очередь, которая паттерн программирования) работы EventLoop. EventLoop - один цикл синхронно выполняет задачи (допустим триггернулся обработчик события изменения файла), и запускает в конце новый цикл, в котором триггернулся другой обработчик события http запроса. С точки зрения внешнего наблюдателя есть очередь выполнения обработчиков (сначала файла, потом http запроса).

Подводя итонг: process.nextTick запланирует выполнение обработчика в следующий проход EventLoop-а. Перефразируя: обработчик выполнился асинхронно, максимально скоро (но порядок обработчиков не гарантирован).

Что-то не могу тут понять, допустим в данный момент выполняется какая-то операция “О” и срабатывает событие содержащее process.nextTick - в этом случае интерпретатор дождется окончания ближайшей логической операции в “О” и сразу выполнит process.nextTick?