anchor.diff:  		{error, Reason} -> {error, Reason}
   	end.
   
  --spec stream_body_recv(#http_req{})
  -	-> {ok, binary(), #http_req{}} | {error, atom()}.
  +-spec stream_body_recv(Req)
  +	-> {ok, binary(), Req} | {error, atom()} when Req::req().
   stream_body_recv(Req=#http_req{
   		transport=Transport, socket=Socket, buffer=Buffer}) ->
   	%% @todo Allow configuring the timeout.
  
positive.code: 
  -include("http.hrl").
  
  %% Request API.
  
  %% @doc Return the HTTP method of the request.
  -spec method(#http_req{}) -> {cowboy_http:method(), #http_req{}}.
  method(Req) ->
  	{Req#http_req.method, Req}.
  
  %% @doc Return the HTTP version used for the request.
  -spec version(#http_req{}) -> {cowboy_http:version(), #http_req{}}.
  version(Req) ->
  	{Req#http_req.version, Req}.
  
  %% @doc Return the peer address and port number of the remote host.
  -spec peer(#http_req{})
  	-> {{inet:ip_address(), inet:port_number()}, #http_req{}}.
  peer(Req=#http_req{socket=Socket, transport=Transport, peer=undefined}) ->
  	{ok, Peer} = Transport:peername(Socket),
  	{Peer, Req#http_req{peer=Peer}};
  
negative.code: %% This essentially removes the host, path, query string, bindings and headers.
  %% Use it when you really need to save up memory, for example when having
  %% many concurrent long-running connections.
  -spec compact(Req) -> Req when Req::req().
  compact(Req) ->
  	Req#http_req{host=undefined, host_info=undefined, path=undefined,
  		path_info=undefined, qs_vals=undefined,
  