def enumerate(args={}, &block)
      passed, failed = [], []
      hook = self
      super do |callback|
        if hook.condition.call(*callback.options[:condition_args])
          hook.passed << callback
          callback.evaluate(args[:context], *args[:args], &args[:block])
        else
          hook.failed << callback
        end
      end
    end
def enumerate(args={}, &block)
      passed, failed = [], []
      hook = self
      super do |callback|
        if hook.condition.call(*callback.options[:condition_args])
          hook.passed << callback
          callback.evaluate(args[:context], *args[:args], &args[:block])
        else
          hook.failed << callback
        end
      end
    end
enumerate over the callbacks
 @param  [Array] args
 @param  [Proc] block
 @return