D
Потом мы берём этот жс и его движок и запускаем где-то, например, в браузере или на сервере (node)
Сервер или браузер предоставляют некое api, например, дляработы с DOM, сетевых запросов, отслеживния событий и так далее. Некоторые из них должны быть асинхронны by design, то есть, не вешать стек намертво пока идёт выполнение. Например, как раз запросы или работа с событиями. Для этого браузер или нода реализуют внутри себя механизм event loop, который просто может в определённый момент выплюнуть в стек какую-то функцию для того чтобы она синхронно выполнилась
Получается так - ты говоришь браузер, сделай голубчик запросец фоном а когда закончишь плюнь мне в стек вот эту функцию
zaprosec().then(funkciya)
Такой вызов запустит запрос, и код пойдёт выполняться дальше. А вот когда придёт время (запрос закончится) - браузер плюнет в стек твою function и она пойдёт уже выполняться