anchor.diff:          end
       end.
   
  -send_changes(DbName, ChangesArgs, Callback, PackedSeqs, AccIn) ->
  +send_changes(DbName, ChangesArgs, Callback, PackedSeqs, AccIn, Timeout) ->
       AllShards = mem3:shards(DbName),
       Seqs = lists:flatmap(fun({#shard{name=Name, node=N} = Shard, Seq}) ->
           case lists:member(Shard, AllShards) of
  
positive.code:         rows = Seqs % store sequence positions instead
      },
      %% TODO: errors need to be handled here
      try rexi_utils:recv(Workers, #shard.ref, fun handle_message/3,
              State, infinity, 5000) of
          {_, NewState} ->
              {ok, NewState}
      after
          fabric_util:cleanup(Workers)
      end.
  
  handle_message({rexi_DOWN, _, _, _}, nil, State) ->
  
negative.code: 
  keep_sending_changes(DbName, Args, Callback, Seqs, AccIn, Timeout) ->
      #changes_args{limit=Limit, feed=Feed, heartbeat=Heartbeat} = Args,
      {ok, Collector} = send_changes(DbName, Args, Callback, Seqs, AccIn, Timeout),
      #collector{limit=Limit2, counters=NewSeqs, user_acc=AccOut} = Collector,
      LastSeq = pack_seqs(NewSeqs),
      if Limit > Limit2, Feed == "longpoll" ->
  