     private(set) var live: Live?
 
     // Private Properties
+    // TODO: make `connectRequests`
     private var ongoingConnectRequest: ConnectRequest?
     private var lastEstablishedConnectRequest: ConnectRequest?
     private var userSessionCookie: String?

            return
        }

        // 4. Ok, there's no cookie available, go get it..
        let cookieCompletion = { (userSessionCookie: String?) -> Void in
            log.debug("Cookie result: [\(sessionType)] [\(userSessionCookie ?? "-")]")
            guard let userSessionCookie = userSessionCookie else {
                let reason = "No available cookie."

// MARK: - Public Methods (Main)
extension NicoUtility {
    func connect(liveNumber: Int, sessionType: NicoSessionType, connectContext: NicoUtility.ConnectContext = .normal) {
        // 1. Save connection request.
        ongoingConnectRequest = ConnectRequest(
            liveNumber: liveNumber,
            sessionType: sessionType
        )
        lastEstablishedConnectRequest = nil

        // 2. Save chat numbers.
        switch connectContext {
        case .normal:
            chatNo.latest = 0
            chatNo.maxBeforeReconnect = 0
        case .reconnect:
            chatNo.maxBeforeReconnect = chatNo.latest
        }

        // 3. Cleanup current connection, if needed.
        if live != nil {
            disconnect()
        }

        // 4. Go direct to `connect()` IF the user session cookie is availale.
        clearUserSessionCookieIfReserved()
        delegate?.nicoUtilityWillPrepareLive(self)
        if let userSessionCookie = userSessionCookie {
