public ResultCollector getPartitionedDataFrom(
      Map<InternalDistributedMember, FunctionRemoteContext> recipMap, PartitionedRegion pr,
      AbstractExecution execution) {

    if (recipMap.isEmpty()) {
      return rc;
    }
    Set<InternalDistributedMember> recipientsSet = new HashSet<>();
    for (InternalDistributedMember member : recipMap.keySet()) {
      recipientsSet.add(member);
    }
    recipients = recipientsSet;

    PRFunctionStreamingResultCollector processor = new PRFunctionStreamingResultCollector(this,
        sys, recipientsSet, rc, functionObject, pr, execution);

    reply = processor;

    for (Map.Entry<InternalDistributedMember, FunctionRemoteContext> entry : recipMap.entrySet()) {
      FunctionRemoteContext context = entry.getValue();
      PartitionMessage m = createRequestMessage(entry.getKey(), processor, context);
      m.setTransactionDistributed(pr.getCache().getTxManager().isDistributed());
      sys.getDistributionManager().putOutgoing(m);
    }
    return processor;
  }
Returns normally if succeeded to get data, otherwise throws an exception Have to wait outside
this function and when getResult() is called. For the time being get the correct results.
geode-core/src/main/java/org/apache/geode/internal/cache/execute/PartitionedRegionFunctionResultWaiter.java