       if @listeners('process-error').length is 0
         throw event.error if event.id and event.metadata and event.error
         throw event
-      @emit 'process-error', event
+      @bufferedEmit 'process-error', event
 
   subscribeNode: (node) ->
     node.component.on 'deactivate', (load) =>

    processOps = (err) =>
      if err
        throw err if @listeners('process-error').length is 0
        @emit 'process-error', err

      unless graphOps.length
        processing = false

        active.push name
    return active

  eventBuffer: []
  bufferedEmit: (event, payload) ->
    # Errors get emitted immediately, like does network end
    if event in ['error', 'process-error', 'end']
      @emit event, payload
      return
    unless @isStarted()
      @eventBuffer.push
        type: event
        payload: payload
      return

    @emit event, payload

    if event is 'start'
      # Once network has started we can send the IP-related events
      for ev in @eventBuffer
        @emit ev.type, ev.payload
      @eventBuffer = []

  # ## Loading components
  #
  # Components can be passed to the NoFlo network in two ways:
