Because the native XMLHTTPRequest object provides the possibility to make synchronous requests:
async
An optional boolean parameter, defaulting to true, indicating whether or not to perform the operation asynchronously.
You can assume that it does that by pausing the thread in which JS runs.