code: private boolean tryProcessOnOtherMembers(Operation operation, String serviceName, long timeoutNanos) {
          final OperationService operationService = nodeEngine.getOperationService();
          final Collection<Member> targets = nodeEngine.getClusterService().getMembers(DATA_MEMBER_SELECTOR);
          final Member localMember = nodeEngine.getLocalMember();
  
          for (Member target : targets) {
              if (target.equals(localMember)) {
                  continue;
              }
              long start = System.nanoTime();
              try {
                  logger.fine("Replicating " + serviceName + " to " + target);
                  InternalCompletableFuture<Object> future =
                          operationService.createInvocationBuilder(null, operation, target.getAddress())
                                  .setTryCount(1)
                                  .invoke();
                  future.get(timeoutNanos, TimeUnit.NANOSECONDS);
                  return true;
              } catch (Exception e) {
                  logger.fine("Failed replication of " + serviceName + " for target " + target, e);
              }
  
              timeoutNanos -= (System.nanoTime() - start);
              if (timeoutNanos < 0) {
                  break;
              }
          }
          return false;
      }
docs: Attempts to process the {@code operation} on at least one non-local
  member. The method will iterate through the member list and try once on
  each member.
  The method returns as soon as the first member successfully processes
  the operation or once there are no more members to try.
  
  @param serviceName the service name
  @return {@code true} if at least one member successfully processed the
  operation, {@code false} otherwise.