| // Copyright 2014 Cubane Canada, Inc. All rights reserved. |
| // See LICENSE for details. |
| |
| /*--- |
| info: | |
| Promise.all expects an iterable argument; |
| fails if GetIterator returns an abrupt completion. |
| es6id: S25.4.4.1_A3.1_T3 |
| author: Sam Mikes |
| description: Promise.all((throw on GetIterator)) returns Promise rejected with TypeError |
| features: [Symbol.iterator] |
| flags: [async] |
| ---*/ |
| |
| var iterThrows = {}; |
| Object.defineProperty(iterThrows, Symbol.iterator, { |
| get: function () { |
| throw new Error("abrupt completion"); |
| } |
| }); |
| |
| Promise.all(iterThrows).then(function () { |
| $ERROR('Promise unexpectedly fulfilled: Promise.all(iterThrows) should throw TypeError'); |
| },function (err) { |
| if (!(err instanceof Error)) { |
| $ERROR('Expected promise to be rejected with error, got ' + err); |
| } |
| }).then($DONE,$DONE); |