From 974373dc40bfe5d2fc89e6b1fdf64af215a78440 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andre=CC=81=20Cruz?= Date: Tue, 30 Apr 2013 19:19:59 +0100 Subject: [PATCH] Throw an error if already resolving. --- lib/resolve/Resolver.js | 11 +++++++++++ 1 file changed, 11 insertions(+) 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;