anchor.diff:      {unknown_transfer_encoding, _} -> FunWrapper({<<>>, done});
       undefined -> FunWrapper({<<>>, done});
       0 -> FunWrapper({<<>>, done});
  -    chunked -> recv_chunked_body(Sock, ?MAX_CHUNK_SIZE, FunWrapper, []);
  -    Length -> recv_unchunked_body(Sock, ?MAX_CHUNK_SIZE, Length, FunWrapper, [])
  +    chunked -> recv_chunked_body(Sock, ?MAX_CHUNK_SIZE, FunWrapper, InitialState);
  +    Length -> recv_unchunked_body(Sock, ?MAX_CHUNK_SIZE, Length, FunWrapper, InitialState)
       end.
           
   body_length(H) ->
  
positive.code:     
  
  recv_body(Sock, Headers, Fun) ->
      
      FunWrapper = fun(Data, Acc) ->
          Fun(Data, Acc)
  
negative.code:     true ->
          {ok, Data1} = gen_tcp:recv(Sock, DataLeft, ?IDLE_TIMEOUT),
          Acc1 = Fun({Data1, done}, Acc),
          Acc1;
      false ->
          {ok, Data2} = gen_tcp:recv(Sock, MaxHunk, ?IDLE_TIMEOUT),
  