       if @acceptAsync hook
         async = new spectacular.AsyncExamplePromise
         async.then => next()
-        async.fail => next()
+        async.fail (reason) => next(reason)
         async.run()
         hook.call(this, async)
       else
         hook.call(this)
         next()
     catch e
-      next()
+      next(e)
 
   executeBlock: ->
     try


  runAfter: (callback) ->
    afters = @afterHooks
    next = =>
      if afters.length is 0
        callback()
      else

spectacular.subject = (name, block) ->
  notInsideIt 'subject'
  [name, block] = [block, name] if typeof name is 'function'
  currentExampleGroup.ownSubjectBlock = block
  spectacular.given name, block if name?

