 
   @publishEvent: (event, callback) =>
     eventHandlers = @eventHandlers[event.name] or []
+    if eventHandlers.length is 0
+      callback null
+      return
+
     queue = async.queue (eventHandler, eventHandlerTaskCallback) =>
       eventHandler event, (err) ->
         if err?

        queue.drain = aggregateTaskCallback
        queue.push [firstEvent]
      else
        aggregateTaskCallback(null)

    , Infinity # TODO determine if it is safe to treat all aggregates in parallel?


    @aggregates.push aggregate

  @commit: (callback) =>
    if @aggregates.length is 0
      callback null
      return

    aggregateQueue = async.queue (aggregate, aggregateTaskCallback) =>
      firstEvent = aggregate.appliedEvents.shift()

