anchor.diff:      chttpd:etag_respond(Req, Etag, fun() ->
           {ok, Resp} = chttpd:start_json_response(Req, 200, [{"Etag",Etag}]),
           CB = fun view_callback/2,
  -        fabric:query_view(Db, DDoc, ViewName, CB, {nil, Resp}, QueryArgs)
  +        fabric:query_view(Db, DDoc, ViewName, CB, {nil, Resp}, QueryArgs),
  +        chttpd:end_json_response(Resp)
       end).
   
   view_callback({total_and_offset, Total, Offset}, {nil, Resp}) ->
  
positive.code:     [send_json/2,send_json/3,send_json/4,send_method_not_allowed/2,send_chunk/2,
      start_json_response/2, start_json_response/3, end_json_response/1,
      send_chunked_error/2]).
  
  design_doc_view(Req, Db, DDoc, ViewName, Keys) ->
      Group = couch_view_group:design_doc_to_view_group(DDoc),
  
negative.code: get_reduce_type(Req) ->
      list_to_existing_atom(chttpd:qs_value(Req, "reduce", "true")).
  
  parse_view_params(Req, Keys, ViewType) when not is_list(Req) ->
      QueryParams = lists:flatmap(fun({K,V}) -> parse_view_param(K,V) end,
          chttpd:qs(Req)),
      parse_view_params(QueryParams, Keys, ViewType);
  parse_view_params(QueryParams, Keys, ViewType) ->
      IsMultiGet = (Keys =/= nil),
      Args = #view_query_args{
          view_type=ViewType,
          multi_get=IsMultiGet,
  