anchor.diff:  %% `{send_retry, N}' specifies how many times the client should retry
   %% sending a request if the connection is closed after the data has been
   %% sent. The default value is 1.
  +%%
  +%% `{partial_upload, N}' specifies how many body parts can be sent to the
  +%% client handling the request without waiting for an acknowledgement. 
  +%% N can be infinity as well meaning that waiting for acknowledgements is not
  +%% required. If partial_upload is specified and the `Content-Length' is not 
  +%% provided in the headers "chunked" `Transfer-Encoding' is used for sending
  +%% the body parts.
   %% @end
   -spec request(string(), string() | atom(), headers(), iolist(),
           pos_integer() | infinity, [option()]) -> result().
  
positive.code:     Pid ! {body_part, self(), http_eob},
      read_response(Pid, Timeout).
  
  -spec send_trailers({pid(), window_size()}, headers()) -> result().
  send_trailers({Pid, Window}, Trailers) ->
      send_trailers({Pid, Window}, Trailers, infinity).
  
  -spec send_trailers({pid(), window_size()}, [{string() | string()}], 
          timeout()) -> result().
  send_trailers({Pid, _Window}, Trailers, Timeout)
  
negative.code: %% protocol, i.e: `"POST"' or `"GET"'. It could also be an atom, which is
  %% then made in to uppercase, if it isn't already.
  %% `Hdrs' is a list of headers to send. Mandatory headers such as
  %% `Host', `Content-Length' or `Transfer-Encoding' (for some requests) 
  %% are added.
  %% `Body' is the entity to send in the request. Please don't include entity
  %% bodies where there shouldn't be any (such as for `GET').
  %% `Timeout' is the timeout for the request in milliseconds.
  