anchor.diff:      GoodNodes = [N || {N, _R} <- GoodReplies],
       {GoodNodes, BadReplies, BadNodes}.
   
  +%% TODO: consider supporting partial janitoring
   -spec query_states(bucket_name(), [node()], undefined | pos_integer()) -> {ok, [{node(), vbucket_id(), vbucket_state()}], [node()]}.
  -query_states(Bucket, Nodes, ReadynessWaitTimeout0) ->
  -    ReadynessWaitTimeout = case ReadynessWaitTimeout0 of
  -                               undefined -> ?WAIT_FOR_MEMCACHED_SECONDS;
  -                               _ -> ReadynessWaitTimeout0
  -                           end,
  -    query_states_new_style(Bucket, Nodes, ReadynessWaitTimeout).
  -
  -%% TODO: consider supporting partial janitoring
  -query_states_new_style(Bucket, Nodes, ReadynessWaitTimeout) ->
  -    NodeRVs = wait_for_memcached_new_style(Nodes, Bucket, connected, ReadynessWaitTimeout),
  +query_states(Bucket, Nodes, undefined) ->
  +    query_states(Bucket, Nodes, ?WAIT_FOR_MEMCACHED_SECONDS);
  +query_states(Bucket, Nodes, ReadynessWaitTimeout) ->
  +    NodeRVs = wait_for_memcached(Nodes, Bucket, connected, ReadynessWaitTimeout),
       BadNodes = [N || {N, R} <- NodeRVs,
                        case R of
                            {ok, _} -> false;
  
positive.code:               NodePids = [{Node, proc_lib:spawn_link(
                                     fun () ->
                                             {ok, TRef} = timer2:kill_after(SecondsToWait * 1000),
                                             RV = new_style_query_vbucket_states_loop(Node, Bucket, Type),
                                             Me ! {'EXIT', self(), {Ref, RV}},
                                             %% doing cancel is quite
                                             %% important. kill_after is
  
negative.code:                      end],
      BadNodes.
  
  query_vbucket_states_loop(Node, Bucket, Type) ->
      case (catch gen_server:call(server_name(Bucket, Node), query_vbucket_states, infinity)) of
          {ok, _} = Msg ->
              Msg;
  