code: public CompletionStage<Void> init(
        boolean listenToClusterEvents,
        boolean reconnectOnFailure,
        boolean useInitialReconnectionSchedule) {
      RunOrSchedule.on(
          adminExecutor,
          () ->
              singleThreaded.init(
                  listenToClusterEvents, reconnectOnFailure, useInitialReconnectionSchedule));
      return singleThreaded.initFuture;
    }
docs: Initializes the control connection. If it is already initialized, this is a no-op and all
  parameters are ignored.
  
  @param listenToClusterEvents whether to register for TOPOLOGY_CHANGE and STATUS_CHANGE events.
  If the control connection has already initialized with another value, this is ignored.
  SCHEMA_CHANGE events are always registered.
  @param reconnectOnFailure whether to schedule a reconnection if the initial attempt fails (this
  does not affect the returned future, which always represent the outcome of the initial
  attempt only).
  @param useInitialReconnectionSchedule if no node can be reached, the type of reconnection
  schedule to use. In other words, the value that will be passed to {@link
  ReconnectionPolicy#newControlConnectionSchedule(boolean)}. Note that this parameter is only
  relevant if {@code reconnectOnFailure} is true, otherwise it is not used.