code: private CompletableFuture<Connection> createConnection(Address address) {
      return connectionFutures.computeIfAbsent(address, a -> {
        CompletableFuture<Connection> future = client.connect(address).thenApply(connection -> {
          connection.onClose(c -> connections.remove(address, c));
          connections.put(address, connection);
          return connection;
        });
        future.whenComplete((connection, error) -> connectionFutures.remove(address));
        return future;
      });
    }
docs: Creates a connection for the given member.
  
  @param address The member for which to create the connection.
  @return A completable future to be called once the connection has been created.