anchor.diff:  			% process common response headers
   			Field = atom_to_list(FieldAtom),
   			NHeaders = [{Field, Value} | Headers],
  -			recv_http_header(Sock, {ok, {Ver, Code, Reason}, NHeaders, Body}, Rest);
  +			recv_http_header(Sock, {ok, {{Ver, Code, Reason}, NHeaders, Body}}, Rest);
   		{ok, {http_header, _, Field, _, Value}, Rest} when is_list(Field) ->
   			% process customized response headers
   			NHeaders = [{Field, Value} | Headers],
  -			recv_http_header(Sock, {ok, {Ver, Code, Reason}, NHeaders, Body}, Rest);
  +			recv_http_header(Sock, {ok, {{Ver, Code, Reason}, NHeaders, Body}}, Rest);
   		{ok, http_eoh, Rest} ->
   			% HTTP header part end, the rest is body data
  -			{ok, {Ver, Code, Reason}, lists:reverse(Headers), binary_to_list(recv_http_body(Sock, [Rest]))}
  +			{ok, {{Ver, Code, Reason}, lists:reverse(Headers), binary_to_list(recv_http_body(Sock, [Rest]))}}
   	end.
   % }}}
   
  
positive.code: % @doc Make a HTTP request and returns responses.
  % @spec request(Req::#http_req{}) ->
  %	{ok,
  %		{Version::string(), Status::integer(), Reason::string()},
  %		[{Field::string(), Value::string()}],
  %		Body::string()
  %	} | {error, Reason::term()}.
  % @end
  % {{{
  -spec request(Req::#http_req{}) ->
  	{ok,
  		{Version::string(), Status::integer(), Reason::string()},
  		[{Field::string(), Value::string()}],
  		Body::string()
  	} | {error, Reason::term()}.
  
  request(Req) ->
  
negative.code: % @doc Receive and parse response headers and body
  % @end
  % {{{
  recv_http_header(Sock, {ok, {{Ver, Code, Reason}, Headers, Body}} = Res, Buf) ->
  	case erlang:decode_packet(httph, Buf, []) of
  		{error, DReason} -> {error, DReason};
  		{more, _} ->
  