       return
 
     # Empty network, no need to connect it up
-    return networkReady network if graph.nodes.length is 0
+    if graph.nodes.length is 0
+      networkReady network
+      return
 
     # Wire the network up and start execution
     network.connect (err) ->
-      return callback err if err
+      if err
+        callback err
+        return
       networkReady network
-
-  network
+      return
+    return
+  return network
 
 # ### Starting a network from a file
 #

    deprecated 'Calling noflo.createNetwork without a callback is deprecated'
    callback = (err) ->
      throw err if err

  # Choose legacy or modern network based on whether graph
  # subscription is needed

  networkReady = (network) ->
    # Send IIPs
    network.start (err) ->
      if err
        callback err
        return
      callback null, network
      return

  # Ensure components are loaded before continuing
  network.loader.listComponents (err) ->
    if err
      callback err
      return

    # In case of delayed execution we don't wire it up
    if options.delay
