docs: private boolean tryOpenAsync() {
          Connection<CL> connection = null;
          // Try to open a new connection, as long as we haven't reached the max
          if (activeCount.get() < config.getMaxConnsPerHost()) {
              try {
                  if (activeCount.incrementAndGet() <= config.getMaxConnsPerHost()) {
                      // Don't try to open too many connections at the same time.
                      if (pendingConnections.incrementAndGet() > config.getMaxPendingConnectionsPerHost()) {
                          pendingConnections.decrementAndGet();
                      }
                      else {
                          try {
                              connectAttempt.incrementAndGet();
                              connection = factory.createConnection(this);
                              connection.openAsync(new Connection.AsyncOpenCallback<CL>() {
                                  @Override
                                  public void success(Connection<CL> connection) {
                                      openConnections.incrementAndGet();
                                      pendingConnections.decrementAndGet();
                                      availableConnections.add(connection);
      
                                      // Sanity check in case the connection
                                      // pool was closed
                                      if (isShutdown()) {
                                          discardIdleConnections();
                                      }
                                  }
      
                                  @Override
                                  public void failure(Connection<CL> conn, ConnectionException e) {
                                      failedOpenConnections.incrementAndGet();
                                      pendingConnections.decrementAndGet();
                                      activeCount.decrementAndGet();
      
                                      if (e instanceof IsDeadConnectionException) {
                                          noteError(e);
                                      }
                                  }
                              });
                              return true;
                          }
                          catch (ThrottledException e) {
                              // Trying to open way too many connections here
                          }
                          finally {
                              if (connection == null)
                                  pendingConnections.decrementAndGet();
                          }
                      }
                  }
              }
              finally {
                  if (connection == null) {
                      activeCount.decrementAndGet();
                  }
              }
          }
          return false;
      }