         from = @getNode edge.from.node
         unless from
             throw new Error "No process defined for outbound node #{edge.from.node}"
+        unless from.component.isReady()
+            from.component.once "ready", =>
+                @addEdge edge
+            return
         to = @getNode edge.to.node
         unless to
             throw new Error "No process defined for inbound node #{edge.to.node}"
+        unless to.component.isReady()
+            to.component.once "ready", =>
+                @addEdge edge
+            return
 
         @connectPort socket, from, edge.from.port, false
         @connectPort socket, to, edge.to.port, true

                port: port

            unless process.component.inPorts and process.component.inPorts[port]
                throw new Error "No inport '#{port}' defined in process #{process.id}" if process.component.isReady()
                process.component.once "ready", =>
                    @connectPort socket, process, port, inbound 
                return

            return process.component.inPorts[port].attach socket

            port: port

        unless process.component.outPorts and process.component.outPorts[port]
            throw new Error "No outport '#{port}' defined in process #{process.id}"
            return

        process.component.outPorts[port].attach socket
