Общая идея заключается в том, что ваш браузер полностью открывает новое соединение, отправляет запрос на сервер и ожидает ответа. Все это в одном соединении, которое управляется браузером через JavaScript API. Соединение не разрывается, а затем снова устанавливается, когда браузер что-то нажимает, поэтому браузер, отправив запрос, знает, что делать, когда запрос завершается.
Что действительно делает вещи асинхронными, так это то, что эти соединения могут происходить отдельно в фоновом режиме, что позволяет отправлять и возвращать несколько запросов, ожидая ответов. Это дает вам приятный эффект AJAX, который выглядит так, будто сервер возвращает что-то позднее.