| // Copyright (C) 2018 Valerie Young. All rights reserved. |
| // This code is governed by the BSD license found in the LICENSE file. |
| |
| /*--- |
| esid: sec-asyncgenerator-prototype-throw |
| description: > |
| "throw" returns a rejected promise |
| info: | |
| AsyncGenerator.prototype.next ( value ) |
| 1. Let generator be the this value. |
| 2. Let completion be NormalCompletion(value). |
| 3. Return ! AsyncGeneratorEnqueue(generator, completion). |
| |
| AsyncGeneratorEnqueue ( generator, completion ) |
| ... |
| 2. Let promiseCapability be ! NewPromiseCapability(%Promise%). |
| ... |
| 4. Let queue be generator.[[AsyncGeneratorQueue]]. |
| 5. Let request be AsyncGeneratorRequest{[[Completion]]: completion, |
| [[Capability]]: promiseCapability}. |
| 6. Append request to the end of queue. |
| ... |
| 9. Return promiseCapability.[[Promise]]. |
| |
| AsyncGeneratorReject ( generator, exception ) |
| 1. Assert: generator is an AsyncGenerator instance. |
| 2. Let queue be generator.[[AsyncGeneratorQueue]]. |
| 3. Assert: queue is not an empty List. |
| 4. Remove the first element from queue and let next be the value of that element. |
| 5. Let promiseCapability be next.[[Capability]]. |
| 6. Perform ! Call(promiseCapability.[[Reject]], undefined, « exception »). |
| ... |
| |
| flags: [async] |
| features: [async-iteration] |
| ---*/ |
| |
| async function* g() {} |
| |
| var errormessage = "Promise rejected." |
| var result = g().throw(new Test262Error(errormessage)) |
| |
| assert(result instanceof Promise, "Expected result to be an instanceof Promise") |
| |
| result.then( |
| function () { |
| throw new Test262Error("Expected result to be rejected promise."); |
| }, |
| function (e) { |
| if (!(e.message = errormessage)) { |
| throw new Test262Error("Expected thrown custom error, got " + e); |
| } |
| } |
| ).then($DONE, $DONE) |