Specifies HTTP client behaviour.
body() :: binary | nil
error_t() :: {:error, %{reason: any}}
headers() :: [{binary, binary}]
http_opts() :: list
method() :: atom | binary
status() :: pos_integer
success_content() :: %{status_code: pos_integer, headers: headers, body: body}
success_t() :: {:ok, success_content}
url() :: binary
request(method, url, body, headers, http_opts) :: success_t | error_t