     query_string: Map.t,
     opts: Keyword.t,
     req_headers: %{binary => binary},
-    req_body: iodata | Map.t,
+    req_body: iodata | Map.t | Maxwell.Multipart.t | file_body_t | Stream.t,
     status: non_neg_integer | nil,
     resp_headers: %{binary => binary},
     resp_body: iodata | Map.t,

  The inspect protocol provides a nice representation of the connection.

  """
  @type t :: %__MODULE__{
    state: :unsent | :sending | :sent | :error,
    method: Atom.t,

       iex> put_path(new(), "delete")
       %Maxwell.Conn{path: "delete"}
  """
  @spec put_path(t, String.t) :: t | no_return
  def put_path(%Conn{state: :unsent} = conn, path), do: %{conn | path: path}
  def put_path(_conn, _path), do: raise AlreadySentError

