public void connectMemberUntilSucceedOrRemoved(Member member) {
        String nodeId = member.getNodeId();
        if (!member.isSameNode(discoveryService.getLocalMember())
                && !isMemberConnected(nodeId)
                && connectingMembers.add(nodeId)) {
            connectMemberUntilSucceedOrRemoved0(member);
        }
    }
Use supplier rather than just listener so that we can bind each generated listener to a
specific TcpConnection to make logic simple
turms-server-common/src/main/java/im/turms/server/common/infra/cluster/service/connection/ConnectionService.java