HTTP error struct from HTTPower.
This struct provides a clean abstraction for all possible HTTP errors, whether they're network issues, timeouts, or other problems.
@type reason() :: atom() | {:http_status, integer(), HTTPower.Response.t()} | {:feature_error, module(), term()}
@type t() :: %HTTPower.Error{message: String.t(), reason: reason()}