anchor.diff:      Pid ! {trailers, self(), Trailers},
       read_response(Pid, Timeout).
   
  +%% @spec (HTTPClient :: pid()) -> Result
  +%%   Result = {ok, Bin} | {ok, {http_eob, Trailers}} 
  +%%   Trailers = [{Header, Value}]
  +%%   Header = string() | binary() | atom()
  +%%   Value = string() | binary()
  +%% @doc Reads a body part from an ongoing response when
  +%% `{partial_download, PartialDownloadOptions}' is used. The default timeout,
  +%% `infinity' will be used. 
  +%% Would be the same as calling
  +%% `get_body_part(HTTPClient, infinity)'.
  +%% @end
   -spec get_body_part(pid()) -> {ok, binary()} | {ok, {http_eob, headers()}}.
   get_body_part(Pid) ->
  +    get_body_part(Pid, infinity).
  +
  +%% @spec (HTTPClient :: pid(), Timeout:: Timeout) -> Result
  +%%   Timeout = integer() | infinity
  +%%   Result = {ok, Bin} | {ok, {http_eob, Trailers}} 
  +%%   Trailers = [{Header, Value}]
  +%%   Header = string() | binary() | atom()
  +%%   Value = string() | binary()
  +%% @doc Reads a body part from an ongoing response when
  +%% `{partial_download, PartialDownloadOptions}' is used.
  +%% `Timeout' is the timeout for reading the next body part in milliseconds. 
  +%% `http_eob' marks the end of the body. If there were Trailers in the
  +%% response those are returned with `http_eob' as well. 
  +%% @end
  +-spec get_body_part(pid(), timeout()) -> 
  +        {ok, binary()} | {ok, {http_eob, headers()}}.
  +get_body_part(Pid, Timeout) ->
       receive
           {body_part, Pid, Bin} ->
               Pid ! {ack, self()},
               {ok, Bin};
           {http_eob, Pid, Trailers} ->
  -            {ok, {http_eob, Trailers}};
  -        Else ->
  -            erlang:error({malformed_message, Else})
  +            {ok, {http_eob, Trailers}}
  +    after Timeout ->
  +        kill_client(Pid)
       end.
   
   %%% Internal functions
  
positive.code: %% Partial upload is intended to avoid keeping large request bodies in
  %% memory but can also be used when the complete size of the body isn't known
  %% when the request is started.
  %% @end
  -spec request(string(), 1..65535, true | false, string(), atom() | string(),
      headers(), iolist(), pos_integer(), [option()]) -> result().
  
negative.code: %%   Reason = connection_closed | connect_timeout | timeout
  %% @doc Sends a request with a body.
  %% Would be the same as calling
  %% `request(URL, Method, Hdrs, Body, Timeout, [])', that is {@link request/6}
  %% with no options.
  %% @end
  -spec request(string(), string() | atom(), headers(), iolist(),
          pos_integer() | infinity) -> result().
  