Good question. Not sure if we need "put if absent". I guess the idea is to refresh the cache value on every write (for the write-through case).

Agree on making this threadsafe with a mutex. It'd be nice to have a more lightweight / lock-free solution here, though I can't think of one. I'll go ahead and add a mutex unless someone has a different way to fix this.