i would try to flush the queue in as many situations as we ever can. `die`/fatal errors will prevent the flush, but otherwise flush everywhere we can. in the worst case, we just unnecessarily remove a cache entry that would not have had to be removed. that is a very harmless case, compared to not invalidate.

if anything, we could add a `clear` method to undo scheduled invalidations by emptying the queue. then somebody with a very specific use case could handle that. 

hm. what happens with the tag based invalidation when the symfony firewall prevents access to a url / controller? what if the controller itself has a failed security check? that might be the case where we do not want to invalidate on a 403. it would need quite some understanding of the app to do this attack, but it could be rather nasty. maybe do not handle the tags on 403 errors? explicit invalidations should still be flushed - a security check should be done at the beginning.