-- in // practice the fetch's network latency means it almost always // does by the time this resolves, but DOMContentLoaded is the // correct fallback rather than assuming that timing. if (document.body) { inject(); } else { document.addEventListener("DOMContentLoaded", inject, { once: true }); } }) .catch(() => { // Fetch failed (network blip, CORS change, endpoint down) -- fail closed, skip the // banner. No real banner is ever coming, so the skeleton would otherwise linger forever. removeBannerSkeleton(); }); })();