docs: @SuppressWarnings("unchecked")
      protected <K, V, T extends RedisChannelHandler<K, V>> ConnectionFuture<T> initializeChannelAsync(
              ConnectionBuilder connectionBuilder) {
  
          Mono<SocketAddress> socketAddressSupplier = connectionBuilder.socketAddress();
  
          if (clientResources.eventExecutorGroup().isShuttingDown()) {
              throw new IllegalStateException("Cannot connect, Event executor group is terminated.");
          }
  
          CompletableFuture<SocketAddress> socketAddressFuture = new CompletableFuture<>();
          CompletableFuture<Channel> channelReadyFuture = new CompletableFuture<>();
  
          socketAddressSupplier.doOnError(socketAddressFuture::completeExceptionally).doOnNext(socketAddressFuture::complete)
                  .subscribe(redisAddress -> {
  
                      if (channelReadyFuture.isCancelled()) {
                          return;
                      }
                      initializeChannelAsync0(connectionBuilder, channelReadyFuture, redisAddress);
                  }, channelReadyFuture::completeExceptionally);
  
          return new DefaultConnectionFuture<>(socketAddressFuture, channelReadyFuture.thenApply(channel -> (T) connectionBuilder
                  .connection()));
      }