the cache is also mutable state, so I could put the `AsyncMutexTable` inside the cache. that would get rid of the scoping issue I talked about in the comments above