           scheme: :http
         }, :keepalive, {:complete, ""}, ""}}
   """
+  @spec parse_request(binary, atom) ::
+          {:ok, {Raxx.Request.t(), connection_status, body_read_state, binary}}
   def parse_request(buffer, scheme) when is_atom(scheme) do
     case :erlang.decode_packet(:http_bin, buffer, []) do
       {:ok, {:http_request, method, {:abs_path, path_and_query}, _version}, rest} ->

      ...> :erlang.iolist_to_binary(head)
      "GET / HTTP/1.1\\r\\nhost: example.com\\r\\nconnection: keep-alive\\r\\naccept: text/plain\\r\\n\\r\\n"
  """
  def serialize_request(request = %Raxx.Request{}, options \\ []) do
    {payload_headers, body} = payload(request)
    connection_headers = connection_headers(Keyword.get(options, :connection))

        body: false
      }, :keepalive, {:complete, ""}, ""}}
  """
  @spec parse_response(binary) ::
          {:ok, {Raxx.Response.t(), connection_status, body_read_state, binary}}
  def parse_response(buffer) do
    case :erlang.decode_packet(:http_bin, buffer, []) do
      {:ok, {:http_response, {1, 1}, status, _reason_phrase}, rest} ->
