code: @Override
      public Connection getConnection(ConnectionRequestContext requestContext) throws SQLException {
          do {
              int expectingMaxSize = poolAdapter.getMaxPoolSize();
              try {
                  long startNanos = System.nanoTime();
                  Connection connection = getConnectionFactory().getConnection(requestContext);
                  long endNanos = System.nanoTime();
                  long connectionAcquireDurationMillis = TimeUnit.NANOSECONDS.toMillis(endNanos - startNanos);
                  if (connectionAcquireDurationMillis > timeoutMillis) {
                      LOGGER.warn("Connection was acquired in {} millis, timeoutMillis is set to {}",
                              connectionAcquireDurationMillis, timeoutMillis);
                      int maxPoolSize = poolAdapter.getMaxPoolSize();
                      if (maxPoolSize < maxOverflowPoolSize) {
                          if (!incrementPoolSize(expectingMaxSize)) {
                              LOGGER.warn("Can't acquire connection, pool size has already overflown to its max size.");
                          }
                      } else {
                          LOGGER.info("Pool size has already overflown to its max size of {}", maxPoolSize);
                      }
                  }
                  return connection;
              } catch (AcquireTimeoutException e) {
                  if (!incrementPoolSize(expectingMaxSize)) {
                      LOGGER.warn("Can't acquire connection due to adaptor timeout, pool size has already overflown to its max size.");
                      throw e;
                  }
              }
          } while (true);
      }
docs: {@inheritDoc}