AdminResponse sendAndWait(AdminRequest msg) {
    try {
      if (sending.get()) {
        throw new OperationCancelledException(
            String.format("Recursion detected while sending %s", msg));
      }
      sending.set(Boolean.TRUE);

      ClusterDistributionManager dm = (ClusterDistributionManager) system.getDistributionManager();
      if (isConnected()) {
        return msg.sendAndWait(dm);
      }
      // generate CancelException if we're shutting down
      dm.getCancelCriterion().checkCancelInProgress(null);
      throw new RuntimeAdminException(
          String.format("%s is not currently connected.", this));

    } finally {
      sending.set(Boolean.FALSE);
    }
  }
Sends an AdminRequest and waits for the AdminReponse
geode-core/src/main/java/org/apache/geode/internal/admin/remote/RemoteGfManagerAgent.java