Sha256: 2f50e24d680981259e2a9b99e1b82047e45bf9009d398e0c510dcf10c295bae4

Contents?: true

Size: 1.48 KB

Versions: 135

Compression:

Stored size: 1.48 KB

Contents

'use strict';

var GetIntrinsic = require('get-intrinsic');

var $SyntaxError = GetIntrinsic('%SyntaxError%');
var $TypeError = GetIntrinsic('%TypeError%');
var $Promise = GetIntrinsic('%Promise%', true);

var callBound = require('call-bind/callBound');

var CreateIterResultObject = require('./CreateIterResultObject');
var IteratorComplete = require('./IteratorComplete');
var IteratorValue = require('./IteratorValue');
var PromiseResolve = require('./PromiseResolve');
var Type = require('./Type');

var $then = callBound('Promise.prototype.then', true);

// https://262.ecma-international.org/10.0/#sec-asyncfromsynciteratorcontinuation

module.exports = function AsyncFromSyncIteratorContinuation(result) {
	if (Type(result) !== 'Object') {
		throw new $TypeError('Assertion failed: Type(O) is not Object');
	}

	if (arguments.length > 1) {
		throw new $SyntaxError('although AsyncFromSyncIteratorContinuation should take a second argument, it is not used in this implementation');
	}

	if (!$Promise) {
		throw new $SyntaxError('This environment does not support Promises.');
	}

	return new Promise(function (resolve) {
		var done = IteratorComplete(result); // step 2
		var value = IteratorValue(result); // step 4
		var valueWrapper = PromiseResolve($Promise, value); // step 6

		// eslint-disable-next-line no-shadow
		var onFulfilled = function (value) { // steps 8-9
			return CreateIterResultObject(value, done); // step 8.a
		};
		resolve($then(valueWrapper, onFulfilled)); // step 11
	}); // step 12
};

Version data entries

135 entries across 27 versions & 2 rubygems

Version Path
immosquare-cleaner-0.1.32 node_modules/es-abstract/2022/AsyncFromSyncIteratorContinuation.js
immosquare-cleaner-0.1.32 node_modules/es-abstract/2023/AsyncFromSyncIteratorContinuation.js
immosquare-cleaner-0.1.32 node_modules/es-abstract/2020/AsyncFromSyncIteratorContinuation.js
immosquare-cleaner-0.1.32 node_modules/es-abstract/2021/AsyncFromSyncIteratorContinuation.js
immosquare-cleaner-0.1.32 node_modules/es-abstract/2019/AsyncFromSyncIteratorContinuation.js
immosquare-cleaner-0.1.31 node_modules/es-abstract/2021/AsyncFromSyncIteratorContinuation.js
immosquare-cleaner-0.1.31 node_modules/es-abstract/2022/AsyncFromSyncIteratorContinuation.js
immosquare-cleaner-0.1.31 node_modules/es-abstract/2019/AsyncFromSyncIteratorContinuation.js
immosquare-cleaner-0.1.31 node_modules/es-abstract/2020/AsyncFromSyncIteratorContinuation.js
immosquare-cleaner-0.1.31 node_modules/es-abstract/2023/AsyncFromSyncIteratorContinuation.js
immosquare-cleaner-0.1.30 node_modules/es-abstract/2022/AsyncFromSyncIteratorContinuation.js
immosquare-cleaner-0.1.30 node_modules/es-abstract/2019/AsyncFromSyncIteratorContinuation.js
immosquare-cleaner-0.1.30 node_modules/es-abstract/2020/AsyncFromSyncIteratorContinuation.js
immosquare-cleaner-0.1.30 node_modules/es-abstract/2023/AsyncFromSyncIteratorContinuation.js
immosquare-cleaner-0.1.30 node_modules/es-abstract/2021/AsyncFromSyncIteratorContinuation.js
immosquare-cleaner-0.1.29 node_modules/es-abstract/2021/AsyncFromSyncIteratorContinuation.js
immosquare-cleaner-0.1.29 node_modules/es-abstract/2022/AsyncFromSyncIteratorContinuation.js
immosquare-cleaner-0.1.29 node_modules/es-abstract/2019/AsyncFromSyncIteratorContinuation.js
immosquare-cleaner-0.1.29 node_modules/es-abstract/2023/AsyncFromSyncIteratorContinuation.js
immosquare-cleaner-0.1.29 node_modules/es-abstract/2020/AsyncFromSyncIteratorContinuation.js