code: function () {
      var self = this;
      if (self._stopped)
        return;
  
      // If we're not already in the middle of a query, we can query now (possibly
      // pausing FETCHING).
      if (self._phase !== PHASE.QUERYING) {
        self._pollQuery();
        throw new SwitchedToQuery;
      }
  
      // We're currently in QUERYING. Set a flag to ensure that we run another
      // query when we're done.
      self._requeryWhenDoneThisQuery = true;
    }
docs: Transitions to QUERYING and runs another query, or (if already in QUERYING) ensures that we will query again later.  This function may not block, because it is called from an oplog entry handler. However, if we were not already in the QUERYING phase, it throws an exception that is caught by the closest surrounding finishIfNeedToPollQuery call; this ensures that we don't continue running close that was designed for another phase inside PHASE.QUERYING.  (It's also necessary whenever logic in this file yields to check that other phases haven't put us into QUERYING mode, though; eg, _fetchModifiedDocuments does this.)