diff --git a/q.js b/q.js index d9405fdc..a29c44f7 100644 --- a/q.js +++ b/q.js @@ -1502,6 +1502,10 @@ Promise.prototype.keys = function () { Q.all = all; function all(promises) { return when(promises, function (promises) { + if (typeof arguments[0].length === "undefined") { + throw TypeError("all() must be passed an array of promises."); + } + var pendingCount = 0; var deferred = defer(); array_reduce(promises, function (undefined, promise, index) { diff --git a/spec/q-spec.js b/spec/q-spec.js index f1d726eb..36d158ff 100644 --- a/spec/q-spec.js +++ b/spec/q-spec.js @@ -1096,6 +1096,20 @@ describe("propagation", function () { }); describe("all", function () { + it("rejects if not passed an array", function() { + var promise = Q.defer(), + willBeRejected = Q.all(promise); + + return willBeRejected.then( + function () { + expect(true).toBe(false); + }, + function (err) { + expect(err.constructor).toBe(TypeError); + } + ); + }); + it("fulfills when passed an empty array", function () { return Q.all([]); });