Memoizes async functions, caching the returned promise, but later deleting the promise from the cache once it resolves.
I made this to address the problem I encountered here:
Prevent multiple async calls from all attempting to refresh an expired OAuth token