@Override
  protected synchronized void processException(ReplyException ex) {
    // we have already forwarded the exception, no need to keep it here
    if (execution.isForwardExceptions() || execution.waitOnException) {
      return;
    }

    // have to keep all the exception
    // rest exception will be added to localresultcollector and it will throw
    // them
    if ((ex.getCause() instanceof CacheClosedException
        || ex.getCause() instanceof ForceReattemptException
        || ex.getCause() instanceof BucketMovedException)) {
      exception = ex;
    } else if (!execution.getWaitOnExceptionFlag()) {
      exception = ex;
    }
  }
Overridden to wait for messages being currently processed: This situation can come about if a
member departs while we are still processing data from that member
geode-core/src/main/java/org/apache/geode/internal/cache/execute/FunctionStreamingResultCollector.java