HTTP tool adapter backed by Req.
@type request() :: %{ :method => atom(), :url => String.t(), optional(:body) => term(), optional(:headers) => keyword() | [{String.t(), String.t()}], optional(:json) => term(), optional(:params) => map(), optional(:timeout) => pos_integer() }