Помню себя пару лет назад, когда задал тотже вопрос.
Чтобы дать на него ответ, надо понять как работает событийный цикл.
Все функции синхронны, абсолютно все, но, если функция выполняется слишком долго, она станет блокирующей операцией.
Например ты читаешь файл, если ты читаешь его весь сразу, пока он читается, весь поток событий застыл на месте.
Если ты читаешь файл асинхронно, то все происходит точно также, но файл читают маленькими кусочками, чтение одного кусочка - одна функция и каждая следующая функция запускается по событию, а в промежутках между событиями для чтения файла, нода вставит события для запуска других функций.