Provides the functions to make HTTP calls.
@type body() :: any()
@type cluster_config() :: %{ :endpoint => binary(), optional(:headers) => headers(), optional(:req_opts) => keyword() }
@type headers() :: %{required(binary()) => binary()}
@type method() :: :head | :get | :post | :put | :delete
@type opts() :: keyword()
@type path() :: iodata()
@spec request(method(), path(), body(), opts()) :: any()