docs: private synchronized CompletableFuture<Void> join() {
      joinFuture = new CompletableFuture<>();
  
      raft.getThreadContext().execute(() -> {
        // Transition the server to the appropriate state for the local member type.
        raft.transition(member.getType());
  
        // Attempt to join the cluster. If the local member is ACTIVE then failing to join the cluster
        // will result in the member attempting to get elected. This allows initial clusters to form.
        List<RaftMemberContext> activeMembers = getActiveMemberStates();
        if (!activeMembers.isEmpty()) {
          join(getActiveMemberStates().iterator());
        } else {
          joinFuture.complete(null);
        }
      });
  
      return joinFuture.whenComplete((result, error) -> joinFuture = null);
    }