Один популярний англомовний YouTube блогер на medium написав статтю про дивні та цікаві речі в Node. Слід зауважити, що в самій статті їх 5, але я сфокусуюсь лише на двох, тому що інші або і так всі знають, або вони просто не цікаві.
Суть в тому, що стандарт лише описує як повинні працювати деякі, здавалося б, базові методи, але кожен рушій JavaScript може реалізовувати його на свій розсуд. За роботу із таймерами в Node відповідає стороння бібліотека Libuv, яка написана на С. І ось наочний приклад як працює setTimeout в Node:

Від себе додам: У своїй практиці як колись помічав, що в деяких кейсах поведінка console.log в Chrome та FF відрізняється, але тоді я не знав в чому причина. Як виявилось причина в різних реалізаціях.
Далі автор наводить приклад як можна імплементувати власну реалізацію функції console.log та використати його в Node середовищі: код на С++ для рушія V8.
print('Hello World')
Тобто у Node функція console.log є лише абстракцією до функції C++ printf. Це означає, що якби в Node захотіли назвати console.log якось інакше, то вони могли б це зробити. Тому що всі функції, які існують в JS, визначені специфікацією ECMAScript. Все, що відрізняється від неї, буде специфічним для середовища виконання, в якому виконується JavaScript. Функції setTimeout та setInterval використовують той самий підхід. Це лише враппери над функціями в C++.
Проміси є в специфікації. Це означає, що вони не залежать від середовища як попередні троє. І, по суті, Promise() не є асинхронними. Це лише спосіб роботи з асинхронними операціями та механізм обробки результатів цих операцій після їх завершення. Вони дозволяють писати асинхронний код, який виглядає і поводиться як синхронний, що полегшує його читання та підтримку. Як доказ цього автор наводить приклад власної реалізації промісу для рушія V8: код.
🌏 Оригінал: medium.com