* If the object is expired from the cache it is recomputed using the
* callback. In case the callback throws an exception the last known value
* is used. In case an exception is thrown, the problem is also logged. In
* case a recomputation is already being done by another thread, the last
* known value is immediately returned.
* If the object is expired from the cache it is recomputed using the
* callback. In case the callback throws an exception the last known value
* is used. In case an exception is thrown, the problem is also logged. In
* case a recomputation is already being done by another thread, the last
* known value is immediately returned.