diff --git a/lib/resolve/Resolver.js b/lib/resolve/Resolver.js index 0bdf4e65..3c09954e 100644 --- a/lib/resolve/Resolver.js +++ b/lib/resolve/Resolver.js @@ -45,6 +45,15 @@ Resolver.prototype.hasNew = function (canonicalPkg) { Resolver.prototype.resolve = function () { var that = this; + // If already resolving, throw an error + // We don't actually reject a promise because this is a + // serious logic error + if (this._resolving) { + throw new Error('Already resolving'); + } + + this._resolving = true; + // Create temporary dir return this._createTempDir() // Resolve self @@ -62,9 +71,11 @@ Resolver.prototype.resolve = function () { ]); }) .then(function () { + that._resolving = false; // Resolve with the folder return that._tempDir; }, function (err) { + that._resolving = false; // If something went wrong, unset the temporary dir that._tempDir = null; throw err;