anchor.diff:      
   
   recv_body(Sock, Headers, Fun) ->
  +    {WrappedFun, InitialState} = case Fun of
  +    {Fun1, State1} ->
  +        {Fun1, State1};
  +    _Fun ->
  +        {Fun, []}
  +    end,
       
       FunWrapper = fun(Data, Acc) ->
           Fun(Data, Acc)
  
positive.code:     true ->
          {ok, Data1} = gen_tcp:recv(Sock, DataLeft, ?IDLE_TIMEOUT),
          Acc1 = Fun({Data1, done}, Acc),
          %%iolist_to_binary(lists:reverse(Acc1));
          Acc1;
      false ->
          {ok, Data2} = gen_tcp:recv(Sock, MaxHunk, ?IDLE_TIMEOUT),
  
negative.code:     {unknown_transfer_encoding, _} -> FunWrapper({<<>>, done});
      undefined -> FunWrapper({<<>>, done});
      0 -> FunWrapper({<<>>, done});
      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) ->
  