Represents an HTTP request failure.
This covers both transport-level failures (connection refused, timeout) and HTTP error responses (4xx, 5xx status codes).
This is a struct, not an exception. All HTTP client implementations must normalize their errors to this struct.