anchor.diff:                  )
               after
                   couch_db_update_notifier:stop(Notify),
  -                get_rest_db_updated() % clean out any remaining update messages
  +                get_rest_db_updated(ok) % clean out any remaining update messages
               end
           end;
       true ->
  -        fun(Callback) ->
  -            start_sending_changes(Callback, Args#changes_args.feed),
  -            {ok, {_, LastSeq, _Prepend, _, _, _, _, _}} =
  +        fun(CallbackAcc) ->
  +            {Callback, UserAcc} = get_callback_acc(CallbackAcc),
  +            UserAcc2 = start_sending_changes(Callback, UserAcc, Feed),
  +            {ok, {_, LastSeq, _Prepend, _, _, UserAcc3, _, _, _}} =
                   send_changes(
                       Args#changes_args{feed="normal"},
                       Callback,
  +                    UserAcc2,
                       Db,
                       StartSeq,
  -                    <<"">>
  +                    <<>>
                   ),
  -            end_sending_changes(Callback, LastSeq, Args#changes_args.feed)
  +            end_sending_changes(Callback, UserAcc3, LastSeq, Feed)
           end
       end.
  +
  +get_callback_acc({Callback, _UserAcc} = Pair) when is_function(Callback, 3) ->
  +    Pair;
  +get_callback_acc(Callback) when is_function(Callback, 2) ->
  +    {fun(Ev, Data, _) -> Callback(Ev, Data) end, ok}.
   
   %% @type Req -> #httpd{} | {json_req, JsonObj()}
   make_filter_fun(FilterName, Style, Req, Db) ->
  
positive.code:     Go = if Limit =< 1 -> stop; true -> ok end,
      case Results of
      [] ->
          {Go, {Db, Seq, Prepend, FilterFun, Callback, ResponseType, Limit,
                  IncludeDocs}
          };
      _ ->
          ChangesRow = changes_row(Db, Seq, Id, Del, Results, Rev, IncludeDocs),
          Callback({change, ChangesRow, Prepend}, ResponseType),
          {Go, {Db, Seq, <<",\n">>, FilterFun, Callback, ResponseType, Limit - 1,
                  IncludeDocs}
          }
      end.
  
  
negative.code:     Go = if Limit =< 1 -> stop; true -> ok end,
      case Results of
      [] ->
          {Go, {Db, Seq, nil, FilterFun, Callback, UserAcc, "continuous", Limit,
                  IncludeDocs}
          };
      _ ->
          ChangesRow = changes_row(Db, Seq, Id, Del, Results, Rev, IncludeDocs),
          UserAcc2 = Callback({change, ChangesRow, <<>>}, "continuous", UserAcc),
          {Go, {Db, Seq, nil, FilterFun, Callback, UserAcc2, "continuous",
                  Limit - 1, IncludeDocs}
          }
      end;
  changes_enumerator(DocInfo, {Db, _, Prepend, FilterFun, Callback, UserAcc,
      ResponseType, Limit, IncludeDocs}) ->
  
      #doc_info{id=Id, high_seq=Seq, revs=[#rev_info{deleted=Del,rev=Rev}|_]}
          = DocInfo,
  