diff --git a/ext/function/gate.js b/ext/function/gate.js index 15b01a0..302c1f1 100644 --- a/ext/function/gate.js +++ b/ext/function/gate.js @@ -51,7 +51,7 @@ module.exports = function (cLimit, qLimit) { if (def) def.resolve(r); return r.finally(decrement); } - r = r.value; + if (!r.failed) r = r.value; } if (!def) return resolve(r); def.resolve(r); diff --git a/test/ext/function/gate.js b/test/ext/function/gate.js index c829e31..e8c6296 100644 --- a/test/ext/function/gate.js +++ b/test/ext/function/gate.js @@ -106,6 +106,13 @@ module.exports = function (t) { dz.resolve(z); dy.resolve(y); dx.resolve(x); + }, + "Resolution type": function (a) { + var error = new Error("Test"); + gfn = t.call(function () { return deferred.reject(error); }, 1, 0); + gfn().done(a.never, function (err) { + a(err, error); + }); } }; };