anchor.diff:  %% Request Body API.
   
   %% @doc Return whether the request message has a body.
  --spec has_body(#http_req{}) -> {boolean(), #http_req{}}.
  +-spec has_body(Req) -> {boolean(), Req} when Req::req().
   has_body(Req) ->
   	Has = lists:keymember('Content-Length', 1, Req#http_req.headers) orelse
   		lists:keymember('Transfer-Encoding', 1, Req#http_req.headers),
  
positive.code: %% Content encoding is generally used for compression.
  %%
  %% Standard encodings can be found in cowboy_http.
  -spec init_stream(fun(), any(), fun(), #http_req{}) -> {ok, #http_req{}}.
  init_stream(TransferDecode, TransferState, ContentDecode, Req) ->
  	{ok, Req#http_req{body_state=
  		{stream, TransferDecode, TransferState, ContentDecode}}}.
  
negative.code: %% @doc Return the full body sent with the reqest, parsed as an
  %% application/x-www-form-urlencoded string. Essentially a POST query string.
  %% @todo We need an option to limit the size of the body for QS too.
  -spec body_qs(Req) -> {list({binary(), binary() | true}), Req} when Req::req().
  body_qs(Req=#http_req{urldecode={URLDecFun, URLDecArg}}) ->
  	{ok, Body, Req2} = body(Req),
  	{cowboy_http:x_www_form_urlencoded(
  