         unless from.component
             throw new Error "No component defined for outbound node #{edge.from.node}"
         unless from.component.isReady()
+            buffer = @setupPortBuffer(from.id)
+
             from.component.once "ready", =>
                 @addEdge edge
-            return
+
+                # When the "from" component isn't ready, it's an outgoing port
+                fromPort = from.component.outPorts[edge.from.port]
+                buffer.outs.push(fromPort)
+
+                # Decrement the count and flush the buffer on empty stack ON NEXT CYCLE
+                next = () =>
+                  buffer.count--
+                  if buffer.count is 0
+                    @flushPortBuffer(from.id)
+
+                setTimeout(next, 0)
+
+            return
+
         to = @getNode edge.to.node
         unless to
             throw new Error "No process defined for inbound node #{edge.to.node}"

    connections: []
    graph: null
    startupDate: null

    constructor: (graph) ->
        @processes = {}

        unless to.component.isReady()
            fromPort = from.component.outPorts[edge.from.port]
            fromPort.downstreamIsGettingReady = true
            buffer = @setupPortBuffer(from.id)

            to.component.once "ready", =>
                @addEdge edge

                # When the "to" component isn't ready, it's an incoming port
                fromPort = from.component.outPorts[edge.from.port]
                buffer.ins.push(fromPort)

                # Decrement the count and flush the buffer on empty stack ON NEXT CYCLE
                next = () =>
                  buffer.count--
                  if buffer.count is 0
                    @flushPortBuffer(from.id)

                setTimeout(next, 0)

            return

        @connectPort socket, to, edge.to.port, true
