private void recoverSingleList(final @NotNull InterestType interestType,
      Connection recoveredConnection,
      boolean isDurable, boolean receiveValues, boolean isFirstNewConnection) {
    for (RegionInterestEntry e : getPool().getRITracker()
        .getRegionToInterestsMap(interestType, isDurable, !receiveValues)
        .values()) {
      // restore a region
      recoverSingleRegion(e.getRegion(), e.getInterests(), interestType, recoveredConnection,
          isDurable, receiveValues, isFirstNewConnection);
    }
  }
Find a new primary, adding any failed servers we encounter to the excluded servers list

First we try to make a backup server the primary, but if run out of backup servers we will try
to find a new server.
geode-core/src/main/java/org/apache/geode/cache/client/internal/QueueManagerImpl.java