@Override
  public void sendResult(Object oneResult) {
    if (!function.hasResult()) {
      throw new IllegalStateException(
          String.format("Cannot %s result as the Function#hasResult() is false",
              "send"));
    }
    if (serverSender != null) { // Client-Server
      if (logger.isDebugEnabled()) {
        logger.debug("MemberFunctionResultSender sending result from local node to client {}",
            oneResult);
      }
      serverSender.sendResult(oneResult);
    } else { // P2P
      if (msg != null) {
        try {
          msg.sendReplyForOneResult(dm, oneResult, false, enableOrderedResultStreming);
        } catch (QueryException e) {
          throw new FunctionException(e);
        } catch (ForceReattemptException e) {
          throw new FunctionException(e);
        } catch (InterruptedException e) {
          throw new FunctionException(e);
        }
      } else {
        rc.addResult(dm.getDistributionManagerId(), oneResult);
        FunctionStatsManager.getFunctionStats(function.getId(), dm.getSystem())
            .incResultsReceived();
      }
      // incrementing result sent stats.
      FunctionStatsManager.getFunctionStats(function.getId(), dm.getSystem())
          .incResultsReturned();
    }
  }
Have to combine next two construcotr in one and make a new class which will send Results back.
geode-core/src/main/java/org/apache/geode/internal/cache/execute/MemberFunctionResultSender.java