returns an error on the first call. I want it to be executed again on the next calls, even if we're within the ttl.
The only way I can think about is to use cachedInvalidateWithTTL and somehow handle a potential error by calling the invalidate function. But that does not feel clean.