defmodule BilldogEng.Error do @moduledoc """ Exception raised when an API request ultimately fails (after retries). """ defexception [:message, :status, :code, :body] @type t :: %__MODULE__{ message: String.t(), status: integer(), code: String.t() | nil, body: term() } @doc false @spec new(String.t(), integer(), String.t() | nil, term()) :: t() def new(message, status, code \\ nil, body \\ nil) do %__MODULE__{message: message, status: status, code: code, body: body} end end