Тут нужно изучать логику работы V8
Насколько я помню и понял(особо не втягиваясь читал как то статью), ложит он их в очередь исполнения на стеке и забывает, далее другой интерфейс (грубо на картинке у Вас выделен Web Apis) браузера получает данные(или когда таймер например сработал) и ложит коллбэк с данными в Event Loop, когда подойдёт его очередь(first in first out) - он запускается. Можно синхронизировать процесс с использованием await, но на async стек не повлияет все равно..
Есть ещё ограничение на одновременное подключение к домену (если мне память не изменяет то их 6 в хромиуме), активных сокет соединений
Сам браузер работает в multithread это в любом случае
Вот с
этим хотя бы полезно ознакомиться, чтобы понять почему таймеры могут немного задерживаться.