Minimal injectable HTTP client behaviour used by built-in platform adapters.
@type header() :: {String.t(), String.t()}
@type response() :: {:ok, %{status: non_neg_integer(), headers: [header()], body: binary()}} | {:error, term()}
@callback post(String.t(), [header()], iodata(), keyword()) :: response()
@callback request(atom(), String.t(), [header()], iodata() | nil, keyword()) :: response()