     commands = []
     for name, version of @getPackageDependencies()
       do (name, version) =>
-        commands.push (callback) =>
-          @installRegisteredPackage({name, version}, options, callback)
-
-    async.waterfall(commands, callback)
+        commands.push (next) =>
+          @installRegisteredPackage({name, version}, options, next)
+
+    async.series(commands, callback)
 
   installDependencies: (options, callback) ->
     options.installGlobally = false

        unless packageVersion
          @logFailure()
          callback("No available version compatible with the installed Atom version: #{@installedAtomVersion}")

        {tarball} = pack.versions[packageVersion]?.dist ? {}
        unless tarball

    installGlobally = options.installGlobally ? true
    unless installGlobally
      if packageVersion and @isPackageInstalled(packageName, packageVersion)
        callback(null, {})
        return

    label = packageName
