For clarification, the use of try/except is because that way we can use pop(), which is an atomic succeed-or-error operation.  The alternative would be a test-and-then-conditionally-do-something process, which would not be atomic. (it's become clear that this is, admittedly, somewhat subtle, so I do plan to add some comments to better explain things)

The use of a list-within-a-dict is primarily so that when multiple threads are simultaneously running (and generating new wsaves), they can all cache their results for later use, instead of caching only one of them and discarding all of the rest.