Node.js - nextTick() vs setImmediate() vs Promises vs setTimeout()
Изучаю документацию к node.js, обратил внимание на функции process.nextTick() и setImmediate(). Первая схожа с механизмом промисов, выполняется сразу после текущей инструкции (но перед промисом). Вторая отрабатывает только в конце цикла, примерно как и setTimeout, но после него. Но зачем тогда они нужны, если промисы и setTimeout выполняют ту же функцию? Это методы, заменяющие данный функционал? Или же, например, инструкция попадает в message queue после setTimeout, а setImmediate() просто поместит ее в начало стека вызовов? В каких случаях использовать тот или иной механизм?