               _error = new Error "concurrently: unable to complete"
               _error.errors = errors
               events.emit "error", _error
-        error = (_error) ->
-          errors.push _error
-          # TODO: If we're going to finish() here, why bother with an array
-          # of errors ... ?
+        record_error = (name, _error) ->
+          if name
+            errors[name] = _error
+          else
+            errors.unnamed_actions ||= []
+            errors.unnamed_actions.push _error
           finish()
         return arg if functions.length is 0
         for [name, fn] in functions

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

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

