def around_hook_events(hookable, event, *args, &block)
        raise "Please pass a block to hook events!" unless block_given?
        around_hooks = find_hook_events(hookable, event).reverse
        aggregate_filter = Proc.new { |&blk| blk.call }
        around_hooks.each do |ah|
          prior_around_filter = aggregate_filter
          aggregate_filter = Proc.new do |&blk|
            hookable.method(ah).call(*args) do
              prior_around_filter.call(&blk)
            end
          end
        end
        aggregate_filter.call(&block)
      end
Triggers all method hooks that match given around event type. Used for 'around' hooks
that stack over the original task cumulatively onto one another.

The final block will be the one that actually invokes the
original task after calling all other around blocks.

@example
around_hook_events(hookable, :around_perform) { hookable.perform }