The PooledCache implementation incorrectly returns `None` instead of the default if an exception occurs, but `None` is a valid cached value, so we instead catch the exceptions ourselves now and skip the caching code if we encounter an exception