response() :: {:ok, t()} | {:error, Hui.Error.t()}
t() :: %Hui.Http{ body: nil | binary() | map(), headers: list(), method: :get | :post, options: keyword(), status: nil | integer(), url: iodata() }
dispatch(request :: t(), client :: module()) :: response()
dispatch(request :: t()) :: response()