               rval = fn( arg )
               if rval instanceof EventChannel
                 rval.on "success", success
-                rval.on "error", error
+                rval.on "error", (error) ->
+                  record_error name, error
               else
                 success rval
             catch _error
-              error _error
+              record_error name, _error
       _fn( arg )
       events
 

          catch error
            events.emit "error", error
        else
          events.emit "success", arg
      _fn( arg )
      return events


    events = @source()
    (arg) ->
      _fn = (arg) ->
        results = {}; errors = {}
        called = 0; returned = 0
        finish = ->
          returned++
