code: void connect(SocketAddress remoteAddress, SessionProtocol desiredProtocol,
                   Promise<Channel> sessionPromise) {
          final Bootstrap bootstrap = getBootstrap(desiredProtocol);
          final ChannelFuture connectFuture = bootstrap.connect(remoteAddress);
  
          connectFuture.addListener((ChannelFuture future) -> {
              if (future.isSuccess()) {
                  initSession(desiredProtocol, future, sessionPromise);
              } else {
                  sessionPromise.setFailure(future.cause());
              }
          });
      }
docs: A low-level operation that triggers a new connection attempt. Used only by:
  <ul>
  <li>{@link #connect(SessionProtocol, PoolKey, CompletableFuture, ClientConnectionTimingsBuilder)} -
  The pool has been exhausted.</li>
  <li>{@link HttpSessionHandler} - HTTP/2 upgrade has failed.</li>
  </ul>