        }, nil, {:complete, ""}, ""}}
 
       iex> "GET /path?qs HTTP/1.1\\r\\nhost: example.com\\r\\naccept: text/plain\\r\\n\\r\\n"
-      ...> |> Raxx.HTTP1.parse_request(:https)
+      ...> |> Raxx.HTTP1.parse_request(scheme: :https)
       {:ok,
        {%Raxx.Request{
          authority: "example.com",

      {:ok, {:http_error, invalid_line}, _rest} ->
        {:error, {:invalid_line, invalid_line}}

      {:more, :undefined} ->
        {:more, buffer}
    end
  end

  defp parse_headers(buffer, headers \\ []) do
    case :erlang.decode_packet(:httph_bin, buffer, []) do
      {:ok, :http_eoh, rest} ->
        {:ok, Enum.reverse(headers), rest}

      {:ok, {:http_header, _, key, _, value}, rest} ->
        parse_headers(rest, [{String.downcase("#{key}"), value} | headers])

      {:ok, {:http_error, invalid_line}, _rest} ->
        {:error, {:invalid_line, invalid_line}}

      {:more, :undefined} ->
        {:more, :undefined}

         scheme: :http
       }, :close, {:complete, ""}, ""}}

       iex> "GET /path?qs HTTP/1.1\\r\\nhost: example.com\\r\\nconnection: keep-alive\\r\\naccept: text/plain\\r\\n\\r\\n"
       ...> |> Raxx.HTTP1.parse_request(scheme: :http)
       {:ok,
        {%Raxx.Request{
          authority: "example.com",
