source: frontend/node_modules/es-abstract/2019/AsyncFromSyncIteratorContinuation.js

Last change on this file was 9af201e, checked in by MBK <marija.karapandzova@…>, 12 days ago

Fix frontend appearance

  • Property mode set to 100644
File size: 1.5 KB
Line 
1'use strict';
2
3var GetIntrinsic = require('get-intrinsic');
4
5var $SyntaxError = require('es-errors/syntax');
6var $TypeError = require('es-errors/type');
7var isObject = require('es-object-atoms/isObject');
8var $Promise = GetIntrinsic('%Promise%', true);
9
10var callBound = require('call-bound');
11
12var CreateIterResultObject = require('./CreateIterResultObject');
13var IteratorComplete = require('./IteratorComplete');
14var IteratorValue = require('./IteratorValue');
15var PromiseResolve = require('./PromiseResolve');
16
17var $then = callBound('Promise.prototype.then', true);
18
19// https://262.ecma-international.org/10.0/#sec-asyncfromsynciteratorcontinuation
20
21module.exports = function AsyncFromSyncIteratorContinuation(result) {
22 if (!isObject(result)) {
23 throw new $TypeError('Assertion failed: Type(O) is not Object');
24 }
25
26 if (arguments.length > 1) {
27 throw new $SyntaxError('although AsyncFromSyncIteratorContinuation should take a second argument, it is not used in this implementation');
28 }
29
30 if (!$Promise) {
31 throw new $SyntaxError('This environment does not support Promises.');
32 }
33
34 return new $Promise(function (resolve) {
35 var done = IteratorComplete(result); // step 2
36 var value = IteratorValue(result); // step 4
37 var valueWrapper = PromiseResolve($Promise, value); // step 6
38
39 // eslint-disable-next-line no-shadow
40 var onFulfilled = function (value) { // steps 8-9
41 return CreateIterResultObject(value, done); // step 8.a
42 };
43 resolve($then(valueWrapper, onFulfilled)); // step 11
44 }); // step 12
45};
Note: See TracBrowser for help on using the repository browser.