@type body() :: binary() | any()
@type headers() :: map() | keyword() | [{binary(), binary()}] | any()
@type method() :: :get | :post | :patch | :delete
@type params() :: map() | keyword() | [{binary(), binary()}] | any()
@type t() :: %{ method: method(), url: binary(), body: body(), headers: headers(), params: params() }
@type url() :: binary() | any()