             dbg("already starting -- nothing to do")
             opts.cb()
             return
-        async.parallel([
-            (cb) =>
-                @open(cb:cb)
+        async.series([
+            (cb) =>
+                @open(cb : cb)
             (cb) =>
                 if opts.set_quotas
                     dbg("setting all quotas")

                        else
                            cb()
            (cb) =>
                dbg("set state to '#{final_state}")
                @_set_state
                    state      : final_state
                    cb         : cb

                    action : 'open'
                    target : host
                    cb     : cb
            (cb) =>
                dbg("succeeded in opening; wait until host set")
                @_synctable.wait
                    until   : (table) => table.getIn([@project_id, 'host', 'host'])?
                    timeout : 30  # should be very fast
                    cb      : opts.cb
        ], (err) =>
            dbg("opening done -- #{err}")
            opts.cb(err)
        )


    # start local_hub daemon running (must be opened somewhere)
