blob: efb01f7bebe85616263ab461a82dbeb5e82f32cd [file] [log] [blame]
// 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-return
description: >
"return" returns a promise for an IteratorResult object
info: |
AsyncGenerator.prototype.return ( value )
1. Let generator be the this value.
2. Let completion be Completion{[[Type]]: return, [[Value]]: value,
[[Target]]: empty}.
3. Return ! AsyncGeneratorEnqueue(generator, completion).
AsyncGeneratorEnqueue ( generator, completion )
...
4. Let queue be generator.[[AsyncGeneratorQueue]].
5. Let request be AsyncGeneratorRequest{[[Completion]]: completion,
[[Capability]]: promiseCapability}.
6. Append request to the end of queue.
...
AsyncGeneratorResolve ( generator, value, done )
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. Let iteratorResult be ! CreateIterResultObject(value, done).
7. Perform ! Call(promiseCapability.[[Resolve]], undefined, « iteratorResult »).
...
flags: [async]
features: [async-iteration]
---*/
async function* g() {}
g().return().then(function (result) {
assert(
Object.hasOwnProperty.call(result, 'value'), 'Has "own" property `value`'
);
assert(
Object.hasOwnProperty.call(result, 'done'), 'Has "own" property `done`'
);
assert.sameValue(Object.getPrototypeOf(result), Object.prototype);
}).then($DONE, $DONE)