             Logger.info(type: .signalingChannel, message: "disconnected from \(String(describing: ws.host))")
 
             if weakSelf.state == .connected {
+                // SignalingChannel で利用する WebSocket が決定した後に、 WebSocket のエラーが発生した場合の処理
+                // ignoreDisconnectWebSocket の値をチェックして SDK の接続処理を終了する
                 if !weakSelf.ignoreDisconnectWebSocket {
                     weakSelf.disconnect(error: error, reason: .webSocket)
                 }
             } else {
+                // SignalingChannel で利用する WebSocket が決定する前に、 WebSocket のエラーが発生した場合の処理
+                // state が .disconnecting, .disconnected の場合もここを通るが、既に SignalingChannel の切断を開始しているため、考慮は不要
+
                 // 接続に失敗した WebSocket が候補に残っている場合取り除く
                 weakSelf.webSocketChannelCandidates.removeAll { $0.url.absoluteURL == ws.url.absoluteURL }
 
+                // 候補が無くなり、かつ SignalingChannel で利用する WebSocket が決まっていない場合、
+                // Sora への接続に失敗したので SDK の接続処理を終了する
                 if weakSelf.webSocketChannelCandidates.count == 0, weakSelf.webSocketChannel == nil {
                     Logger.info(type: .signalingChannel, message: "failed to connect to Sora")
                     if !weakSelf.ignoreDisconnectWebSocket {

    private func setUpWebSocketChannel(url: URL) -> URLSessionWebSocketChannel {
        let ws = URLSessionWebSocketChannel(url: url)

        // 接続時
        ws.internalHandlers.onConnect = { [weak self] webSocketChannel in
            guard let weakSelf = self else {
                return

        }
    }

    // SignalingChannel で利用する WebSocket
    var webSocketChannel: URLSessionWebSocketChannel?

    // SignalingChannel で利用する WebSocket の候補
    // WebSocket が接続に失敗した場合、候補から削除されます
    // また、 SignalingChannel で利用する WebSocket が決定した場合は空になります
    var webSocketChannelCandidates: [URLSessionWebSocketChannel] = []

    private var onConnectHandler: ((Error?) -> Void)?

    // WebSocket の接続を複数同時に試行する際の排他制御を行うためのキュー
    //
    // このキューの並行性を1に設定した上で URLSession の delegateQueue に設定することで、
    // URLSession のコールバックが同時に発火することを防ぎます
    private let queue: OperationQueue

    var connectedUrl: URL?
