中止済みsignalで2回AbortErrorとなり、新しいsignalではJSONを読み込めた実画面
同じJSONに対する実際のfetch。待ち時間や通信障害を作る模擬APIではありません。 タップして拡大できます。

const used = new AbortController();
used.abort();

// 中止済みのsignalでの取得は失敗する
await fetch("sample.json", { signal: used.signal });

// 別の処理として再試行するときは新しく作る
const fresh = new AbortController();
await fetch("sample.json", { signal: fresh.signal });