when(setDeferredDataToTrue, cachedFunction.withCache(CacheType.ALL))
.always(setDeferredDataToFalse)
.done(assertDeferredDataIsTrue)
.then(cachedFunction)
.done(assertDeferredDataIsTrue)
.then(cachedFunction.withCache(CacheType.REJECTED))
.done(assertDeferredDataIsFalse)
.always(setDeferredDataToTrue)
.then(cachedFunction.withCache(CacheType.RESOLVED))
.done(assertDeferredDataIsFalse)
.then(cachedFunction.resetCache())