| // Copyright 2014 Cubane Canada, Inc. All rights reserved. |
| // See LICENSE for details. |
| |
| /*--- |
| info: | |
| PerformPromiseThen |
| Ref 25.4.5.3.1 |
| es6id: S25.4.5.3_A5.3_T1 |
| author: Sam Mikes |
| description: Promise.prototype.then immediately queues handler if rejected |
| includes: [promiseHelper.js] |
| flags: [async] |
| ---*/ |
| |
| var sequence = [], |
| pReject, |
| p = new Promise(function(resolve, reject) { |
| pReject = reject; |
| }); |
| |
| sequence.push(1); |
| |
| pReject(); |
| |
| p.then(function() { |
| $ERROR("Should not be called -- Promise rejected."); |
| }, function() { |
| sequence.push(3); |
| checkSequence(sequence, "Should be first"); |
| }).catch($DONE); |
| |
| Promise.resolve().then(function() { |
| // enqueue another then-handler |
| p.then(function() { |
| $ERROR("Should not be called (2) -- Promise rejected."); |
| }, function() { |
| sequence.push(5); |
| checkSequence(sequence, "Should be third"); |
| }).then($DONE, $DONE); |
| |
| sequence.push(4); |
| checkSequence(sequence, "Should be second"); |
| }).catch($DONE); |
| |
| sequence.push(2); |