события и промисы выполняются асинхронно. у меня непонятки немного в другом ))
мне кажется проблема в том что ты не понимаешь как работает event loop. Асинхронно выполняются нативные функции js, а клики, ajax, таймауты это браузерное апи. Дж идет синхронно, когда он проходит по коду и видит хендлер у клика, он передает его браузерному апи которое следит за думом и слушает евент клика. даже в названии можно понять addEventListener