 
   @addProperty: (name, getter) -> super(name, @promisify(getter, name))
 
-  @promisify: (fn, name = null) -> ->
-    task = @resolveFlags().then => Q.promised(fn)
+  @promisify: (fn, name = null) -> (args...) ->
+    task = @resolveFlags().then => Q.promised(fn).apply(this, args)
     barrierContext.pushTask(task, "expectation #{name}")
 
     this

      this

  resolveFlags: ->
    flags = _.keys(@__flags || {})
    promises = _.map flags, (flag) =>
      Q(@__flags[flag]).then (value) =>


Expectation.addMethod "reject", (args...) ->
  fn = @flag("object")
  p = if _.isFunction(fn) then fn() else fn

  promise = p
    .then(-> ->)
    .catch((err) -> -> throw err)
    .then (resolvedFn) => @flag("object", resolvedFn).throw(args...)
