I think you should use the return value of `@cache_backend.cas`, which will be `false` on a cache miss, rather than depending on map_cached_nil_for preventing the yielded result from being `nil`.

I think the only thing that prevented us from storing `nil` was that cache.read would return `nil` for a cache miss as well as if the value cached was `nil`.  I think we may even be able to get rid of `map_cached_nil_for` now that we don't use cache.read.