## TL;DR

XMLHttpRequest (XHR) is an API for making HTTP requests from JavaScript, first introduced by Microsoft in 1999 for Outlook Web Access. It was the foundation of Ajax and is now largely superseded by the Fetch API, though still used in legacy systems and for upload progress tracking.

## Core Explanation

XHR uses event-based callbacks (`onload`, `onerror`, `onprogress`) rather than Promises. It supports synchronous requests (`xhr.open('GET', url, false)`), though these are deprecated and block the main thread. XHR remains the only standard API that provides upload progress events (`xhr.upload.onprogress`), which Fetch API does not natively support.

## Further Reading

- [XMLHttpRequest Living Standard](https://xhr.spec.whatwg.org/)