move defer() to Destroyable so Invalidating can use it
leverage Destroyable.defer() in Invalidating and add a test case
to verify refresh is not called after destroy