Caching is hard. My closure cache that had serve-stale-and-refresh functionality didn't leak in an obvious way, but it wound up "leaking" refresh attempts (ie several callers would attempt to refresh simultaneously ... especially if the data source was slow).