anchor.diff:              erlang:error(Reason)
       end.
   
  +-spec send_body_part({pid(), window_size()}, binary()) -> 
  +        {pid(), window_size()} | result().
  +send_body_part({Pid, Window}, Bin) ->
  +    send_body_part({Pid, Window}, Bin, infinity).
  +
   -spec send_body_part({pid(), window_size()}, binary(), timeout()) -> 
           {pid(), window_size()} | result().
  -send_body_part({Pid, 0}, Bin, Timeout) ->
  +send_body_part({Pid, 0}, Bin, Timeout) 
  +        when is_binary(Bin), is_pid(Pid) ->
       receive
           {ack, Pid} ->
               send_body_part({Pid, 1}, Bin, Timeout);
  
positive.code:         kill_client(Pid)
      end;
  send_body_part({Pid, Window}, Bin, _Timeout) 
          when Window >= 0, is_binary(Bin) ->
      Pid ! {body_part, self(), Bin},
      receive
          {ack, Pid} ->
  
negative.code:     after 0 ->
          {Pid, dec(Window)}
      end;
  send_body_part({Pid, Window}, http_eob, Timeout) 
          when is_pid(Pid) ->
      Pid ! {body_part, self(), http_eob},
      read_response({Pid, Window}, Timeout).
  
  -spec send_trailers({pid(), window_size()}, [{string() | string()}]) 
          -> 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)
          when is_list(Trailers), is_pid(Pid) ->
      Pid ! {trailers, self(), Trailers},
      read_response({Pid, Window}, Timeout).
  
  