code: CompletableFuture<PooledChannel> acquireLater(SessionProtocol desiredProtocol, PoolKey key,
                                                    ClientConnectionTimingsBuilder timingsBuilder) {
          final CompletableFuture<PooledChannel> promise = new CompletableFuture<>();
          if (!usePendingAcquisition(desiredProtocol, key, promise, timingsBuilder)) {
              connect(desiredProtocol, key, promise, timingsBuilder);
          }
          return promise;
      }
docs: Acquires a new {@link Channel} which is matched by the specified condition by making a connection
  attempt or waiting for the current connection attempt in progress.