       index: index
 
     unless process.component.outPorts and process.component.outPorts[port]
-      throw new Error "No outport '#{port}' defined in process #{process.id} (#{socket.getId()})"
+      callback new Error "No outport '#{port}' defined in process #{process.id} (#{socket.getId()})"
       return
 
     if process.component.outPorts[port].isAddressable()
-      return process.component.outPorts[port].attach socket, index
+      process.component.outPorts[port].attach socket, index
+      do callback
+      return
     process.component.outPorts[port].attach socket
+    do callback
+    return
 
   subscribeGraph: ->
     # A NoFlo graph may change after network initialization.

        @addInitial initializer, callback
      return

    @connectPort socket, to, initializer.to.port, initializer.to.index, true

    @connections.push socket

    init =
      socket: socket
      data: initializer.from.data
    @initials.push init
    @nextInitials.push init

    if @isRunning()
      # Network is running now, send initials immediately
      do @sendInitials
    else if not @isStopped()
      # Network has finished but hasn't been stopped, set
      # started and set
      @setStarted true
      do @sendInitials

    callback()

  removeInitial: (initializer, callback) ->
    for connection in @connections

    # Start with node creators
    nodes "Node"

  connectPort: (socket, process, port, index, inbound, callback) ->
    if inbound
      socket.to =
        process: process
