@Override
  public Connection borrowConnection(ServerLocation server, long acquireTimeout,
      boolean onlyUseExistingCnx)
      throws ServerConnectivityException {

    Connection connection;
    logger.trace("Connection borrowConnection single hop connection");

    long waitStart = NOT_WAITING;
    try {
      long timeout = System.nanoTime() + MILLISECONDS.toNanos(acquireTimeout);
      while (true) {

        connection =
            availableConnectionManager.useFirst((c) -> c.getServer().equals(server));

        if (null != connection) {
          return connection;
        }

        if (!onlyUseExistingCnx) {
          connection = forceCreateConnection(server);
          if (null != connection) {
            return connection;
          }
          throw new ServerConnectivityException(BORROW_CONN_ERROR_MSG + server);
        }

        if (checkShutdownInterruptedOrTimeout(timeout)) {
          break;
        }

        waitStart = beginConnectionWaitStatIfNotStarted(waitStart);

        Thread.yield();
      }
    } finally {
      endConnectionWaitStatIfStarted(waitStart);
    }

    cancelCriterion.checkCancelInProgress(null);

    throw new AllConnectionsInUseException();
  }
Always creates a connection and may cause {@link ConnectionAccounting} to exceed maximum.
geode-core/src/main/java/org/apache/geode/cache/client/internal/pooling/ConnectionManagerImpl.java