basic `guard` functionality

A way to control when a deferred is run for e.g. throttling. 
See #94