@spec request(String.t(), Keyword.t()) :: {:ok, map()} | {:error, map()}
@spec request!(String.t(), Keyword.t()) :: map()