                        #{@eventSourceable}<#{command.targetId}>"), command)
     eventSourceable = @repository.find @eventSourceable, command.targetId
     throw Router.ERRORS.cannotHandleMessage(command) if !eventSourceable?
-    @repository.save(@_handleDomainErrors -> eventSourceable.handle(command))
+    eventSourceable = @_handleDomainErrors(-> eventSourceable.handle command)
+    @repository.save(eventSourceable) if eventSourceable?
 
   _logMsg: (message) -> "#{@configuration.appId}: #{this}: #{message}"
 

      @eventBus.subscribeTo @initializingMessage, (event) =>
        @log.info("#{this}: Creating new #{@eventSourceable} with event
                  #{event.typeName()}\n", event)
        @repository.save(@_handleDomainErrors -> new @eventSourceable(event))
    else if @initializingMessage.isSubclassOf(Space.messaging.Command)
      @commandBus.registerHandler @initializingMessage, (cmd) =>
        @log.info("#{this}: Creating new #{@eventSourceable} with command
                  #{cmd.typeName()}\n", cmd)
        @repository.save(@_handleDomainErrors -> new @eventSourceable(cmd))

  _routeEventToEventSourceable: (eventType) ->
    @eventBus.subscribeTo eventType, @_genericEventHandler

                       #{@eventSourceable}<#{correlationId}>\n"), event)
    eventSourceable = @repository.find @eventSourceable, correlationId
    throw Router.ERRORS.cannotHandleMessage(event) if !eventSourceable?
    eventSourceable = @_handleDomainErrors(-> eventSourceable.handle event)
    @repository.save(eventSourceable) if eventSourceable?

  _genericCommandHandler: (command) =>
    if not command? then return
