Rarely cache can serve old value having slower backend

Assuming that `get` method from engine is asynchronous and can take bit more time occasionally, there is time window, when cache can serve accidentally old value.

If `generateFunc` is faster than `staleTimeout` or `generateTimeout ` it will fire old values via `setTimeout` and if there are pending callbacks it will send old value. Its only short window, when there are pending callbacks that can be hit by this setTimeout, its after calling `get` on cache engine, while waiting for response.