anchor.diff:  
   observe_wait_all_done(Bucket, VBucket, SrcNode, DstNodes, Sleeper) ->
       TapNames = sets:from_list([iolist_to_binary(tap_name(VBucket, SrcNode, DN)) || DN <- DstNodes]),
  -    observe_wait_all_done_tail(Bucket, SrcNode, Sleeper, TapNames, true),
  -    wait_checkpoint_opened(Bucket, VBucket, DstNodes, Sleeper, true).
  -
  -observe_wait_all_done_tail(Bucket, SrcNode, Sleeper, TapNames, FirstTime) ->
  +    observe_wait_all_done_tail(Bucket, SrcNode, Sleeper, TapNames, 0),
  +    wait_checkpoint_opened(Bucket, VBucket, DstNodes, Sleeper, 0).
  +
  +observe_wait_all_done_tail(Bucket, SrcNode, Sleeper, TapNames, SleepsSoFar) ->
       case sets:size(TapNames) of
           0 ->
               ok;
           _ ->
  -            if not FirstTime ->
  +            if SleepsSoFar > 0 ->
                       system_stats_collector:increment_counter(replicas_builder_backfill_sleeps, 1),
  -                    Sleeper();
  +                    Sleeper(SleepsSoFar);
                  true ->
                       ok
               end,
               {ok, PList} = ns_memcached:stats(SrcNode, Bucket, <<"tap">>),
               DoneTaps = extract_complete_taps(PList, TapNames),
               NewTapNames = sets:subtract(TapNames, DoneTaps),
  -            observe_wait_all_done_tail(Bucket, SrcNode, Sleeper, NewTapNames, false)
  -    end.
  -
  -wait_checkpoint_opened(_Bucket, _VBucket, [], _Sleeper, _FirstTime) ->
  +            observe_wait_all_done_tail(Bucket, SrcNode, Sleeper, NewTapNames, SleepsSoFar+1)
  +    end.
  +
  +wait_checkpoint_opened(_Bucket, _VBucket, [], _Sleeper, _SleepsSoFar) ->
       ok;
  -wait_checkpoint_opened(Bucket, VBucket, DstNodes, Sleeper, FirstTime) ->
  -    case FirstTime of
  +wait_checkpoint_opened(Bucket, VBucket, DstNodes, Sleeper, SleepsSoFar) ->
  +    case SleepsSoFar =:= 0 of
           false ->
               system_stats_collector:increment_counter(replicas_builder_checkpoint_sleeps, 1),
               ?log_debug("Incremented replicas_builder_checkpoint_sleeps"),
  -            Sleeper();
  +            Sleeper(SleepsSoFar);
           true -> ok
       end,
       Checkpoints = ns_memcached:get_vbucket_open_checkpoint(DstNodes, Bucket, VBucket),
  
positive.code:                         [fun build_replicas_main/6,
                           [Bucket, VBucket, SrcNode, ReplicateIntoNodes, JustBackfillNodes, AfterDone]]).
  
  -define(COMPLETION_POLLING_INTERVAL, 100).
  
  %% @doc works like try/after but when try has raised exception, any
  %% exception from AfterBody is logged and ignored. I.e. when we face
  
negative.code:                               _ ->
                                    false
                            end],
      wait_checkpoint_opened(Bucket, VBucket, NodesLeft, Sleeper, SleepsSoFar+1).
  