anchor.diff:  %% there is no response within `Timeout' milliseconds, the request is
   %% canceled and `{error, timeout}' is returned.
   %% @end
  --spec send_body_part({pid(), window_size()}, binary(), timeout()) -> 
  +-spec send_body_part({pid(), window_size()}, iolist(), timeout()) -> 
           {ok, {pid(), window_size()}} | result().
  -send_body_part({Pid, 0}, Bin, Timeout) 
  -        when is_binary(Bin), is_pid(Pid) ->
  +send_body_part({Pid, _Window}, http_eob, Timeout) when is_pid(Pid) ->
  +    Pid ! {body_part, self(), http_eob},
  +    read_response(Pid, Timeout);
  +send_body_part({Pid, 0}, IoList, Timeout) when is_pid(Pid) ->
       receive
           {ack, Pid} ->
  -            send_body_part({Pid, 1}, Bin, Timeout);
  +            send_body_part({Pid, 1}, IoList, Timeout);
           {response, Pid, R} ->
               R;
           {exit, Pid, Reason} ->
  
positive.code: %% Would be the same as calling
  %% `send_body_part(UploadState, BodyPart, infinity)'.
  %% @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 (UploadState :: UploadState, BodyPart :: BodyPart, Timeout) -> Result
  %%   BodyPart = iolist() | binary()
  
negative.code:             exit(Reason)
      after 0 ->
          {ok, {Pid, lhttpc_lib:dec(Window)}}
      end.
  
  %% @spec (UploadState :: UploadState, Trailers) -> Result
  %%   Header = string() | binary() | atom()
  