◆ download の開始しようとしてるところで中断するとソケットが開放されない
◆ 使用できるソケットを待機しています がずっと続く
◆ ブラウザ再起動すればなんとかなった

に解説記事をかいた downloads API ですが問題がありました
使い方が悪い部分もありますが バグといってもいいかもしれないです

問題

chrome.downloads.download 関数でダウンロードを開始しようとしているときにそのタブを閉じて強制終了させます
すると ダウンロードはされないのですが ダウンロードしようとしたサイトにつなげなくなります

「使用できるソケットを待機しています」というメッセージが左下にで続けて接続できないです

原因

原因はメッセージのとおり 使用できるソケットがないからです

chrome://net-internals/#sockets

でソケットの状況を確認できます

chrome-sockets


Name のところにあるようにドメインごとに管理されてるようです

ダウンロードを開始しようとした時にタブを閉じて強制終了するとソケットを確保したまま解放しないようで ここの Active の数が 6 になっていました
状態は pending です

一番上の表にある Max Per Group が 6 つなので 6 つダウンロードが途中で止まっているとソケットに空きがない状態です
強制終了したせいで残ってしまったソケットはいつまで待っても解放されないのでずっと待機し続けます

管理はドメインごとなので別のページを開けば問題ないので気づきにくそうですが 拡張機能を作るときには困るところです

普通に使っていて 「使用できるソケットを待機しています」 が出るのは 大量に同時接続してるせいなので 待てば通信を終えたソケットが空いて接続できるようになるのですが この場合はいくら待っても空かないです

対策

上のボタンで flush してみても改善せず キャッシュや cookie のクリアをしても改善しませんでした

最終手段の再起動(Chromeの)で直りましたがブラウザの再起動はあまりしたくないものです
早く改善してほしいですね