Adds Hooks.wait to later on use it for async hooks (#167)

For now, the only hook that accepts async is beforeRemove. This is an
implementation test and will propagate to others if it fits.