UNPKG

1.01 kBJavaScriptView Raw
1'use strict';
2// https://github.com/tc39/proposal-async-explicit-resource-management
3var call = require('../internals/function-call');
4var defineBuiltIn = require('../internals/define-built-in');
5var getBuiltIn = require('../internals/get-built-in');
6var getMethod = require('../internals/get-method');
7var hasOwn = require('../internals/has-own-property');
8var wellKnownSymbol = require('../internals/well-known-symbol');
9var AsyncIteratorPrototype = require('../internals/async-iterator-prototype');
10
11var ASYNC_DISPOSE = wellKnownSymbol('asyncDispose');
12var Promise = getBuiltIn('Promise');
13
14if (!hasOwn(AsyncIteratorPrototype, ASYNC_DISPOSE)) {
15 defineBuiltIn(AsyncIteratorPrototype, ASYNC_DISPOSE, function () {
16 var O = this;
17 return new Promise(function (resolve, reject) {
18 var $return = getMethod(O, 'return');
19 if ($return) {
20 Promise.resolve(call($return, O)).then(function () {
21 resolve(undefined);
22 }, reject);
23 } else resolve(undefined);
24 });
25 });
26}