Промисы внезапно синхронные и ещё как блочат. Промис является просто оберткой над будущим результатом и предназначен для получения результата асинхронной задачи в своем теле.
Если ты ожидаешь что-то что является результатом синхронной операции - то промис будет блочить стек вплоть до завершения синхронной задачи. И потом просто вызовет коллбек с результатом в конце текущей итерации стека.
Всмысле? Любая синхронная задача. Ты наверное никогда с этим не сталкивался и на задумывался, потому что использовал промисы сугубо по их назначению, как обертку над асинхронными вызовами.