-
-
Notifications
You must be signed in to change notification settings - Fork 31
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[New] ES2018+
: Add CreateAsyncFromSyncIterator
#105
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
'use strict'; | ||
|
||
var AsyncFromSyncIterator = require('../helpers/AsyncFromSyncIterator'); | ||
var Get = require('./Get'); | ||
|
||
// https://www.ecma-international.org/ecma-262/9.0/#sec-createasyncfromsynciterator | ||
|
||
module.exports = function CreateAsyncFromSyncIterator(syncIteratorRecord) { | ||
if (!AsyncFromSyncIterator) { | ||
throw new SyntaxError('This environment does not support Promises.'); | ||
} | ||
|
||
var asyncIterator = new AsyncFromSyncIterator(syncIteratorRecord); | ||
var nextMethod = Get(asyncIterator, 'next'); | ||
return { | ||
'[[Iterator]]': asyncIterator, | ||
'[[NextMethod]]': nextMethod, | ||
'[[Done]]': false | ||
}; | ||
}; |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@@ -0,0 +1,230 @@ | ||||||||||||||||||||||||||||||||||||||||||||||||
'use strict'; | ||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||
var internalSlot = require('internal-slot'); | ||||||||||||||||||||||||||||||||||||||||||||||||
var isCallable = require('is-callable'); | ||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||
var callBind = require('./callBind'); | ||||||||||||||||||||||||||||||||||||||||||||||||
var callBound = require('./callBound'); | ||||||||||||||||||||||||||||||||||||||||||||||||
var GetIntrinsic = require('../GetIntrinsic'); | ||||||||||||||||||||||||||||||||||||||||||||||||
var $isNaN = require('./isNaN'); | ||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||
var $apply = GetIntrinsic('%Reflect.apply%', true) || callBound('%Function.prototype.apply%'); | ||||||||||||||||||||||||||||||||||||||||||||||||
var $asyncIterator = GetIntrinsic('%Symbol.asyncIterator%', true); | ||||||||||||||||||||||||||||||||||||||||||||||||
var $toStringTag = GetIntrinsic('%Symbol.toStringTag%', true); | ||||||||||||||||||||||||||||||||||||||||||||||||
var $TypeError = GetIntrinsic('%TypeError%'); | ||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||
var undefined; | ||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||
// TODO: Use %AsyncIterator.from% once it's in ECMA-262 | ||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||
/** @type {(o: object, p: string | symbol, Desc: import('es-abstract').PropertyDescriptor) => boolean} */ | ||||||||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
i'm not interested in jsdoc comments at this time |
||||||||||||||||||||||||||||||||||||||||||||||||
var DefineOwnProperty = callBind( | ||||||||||||||||||||||||||||||||||||||||||||||||
require('./DefineOwnProperty'), | ||||||||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. this should be required at module level and used here |
||||||||||||||||||||||||||||||||||||||||||||||||
undefined, | ||||||||||||||||||||||||||||||||||||||||||||||||
function IsDataDescriptor(Desc) { | ||||||||||||||||||||||||||||||||||||||||||||||||
return !('[[Get]]' in Desc) && !('[[Set]]' in Desc); | ||||||||||||||||||||||||||||||||||||||||||||||||
}, | ||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+24
to
+26
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. this should use There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. You do realise that this is now in the As such, there is no There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. In that case, it should take |
||||||||||||||||||||||||||||||||||||||||||||||||
GetIntrinsic('%Object.is%', true) || function SameValue(x, y) { | ||||||||||||||||||||||||||||||||||||||||||||||||
if (x === y) { | ||||||||||||||||||||||||||||||||||||||||||||||||
// 0 === -0, but they are not identical. | ||||||||||||||||||||||||||||||||||||||||||||||||
if (x === 0) { | ||||||||||||||||||||||||||||||||||||||||||||||||
return 1 / x === 1 / y; | ||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||
return true; | ||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||
return $isNaN(x) && $isNaN(y); | ||||||||||||||||||||||||||||||||||||||||||||||||
}, | ||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+27
to
+36
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. this should just use There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This should also be passed as a function argument. |
||||||||||||||||||||||||||||||||||||||||||||||||
function FromPropertyDescriptor(Desc) { | ||||||||||||||||||||||||||||||||||||||||||||||||
var obj = {}; | ||||||||||||||||||||||||||||||||||||||||||||||||
if ('[[Value]]' in Desc) { | ||||||||||||||||||||||||||||||||||||||||||||||||
obj.value = Desc['[[Value]]']; | ||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||
if ('[[Writable]]' in Desc) { | ||||||||||||||||||||||||||||||||||||||||||||||||
obj.writable = Desc['[[Writable]]']; | ||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||
if ('[[Get]]' in Desc) { | ||||||||||||||||||||||||||||||||||||||||||||||||
obj.get = Desc['[[Get]]']; | ||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||
if ('[[Set]]' in Desc) { | ||||||||||||||||||||||||||||||||||||||||||||||||
obj.set = Desc['[[Set]]']; | ||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||
if ('[[Enumerable]]' in Desc) { | ||||||||||||||||||||||||||||||||||||||||||||||||
obj.enumerable = Desc['[[Enumerable]]']; | ||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||
if ('[[Configurable]]' in Desc) { | ||||||||||||||||||||||||||||||||||||||||||||||||
obj.configurable = Desc['[[Configurable]]']; | ||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||
return obj; | ||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+37
to
+58
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
where FromPropertyDescriptor is |
||||||||||||||||||||||||||||||||||||||||||||||||
); | ||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||
var CreateMethodProperty = function CreateMethodProperty(O, P, V) { | ||||||||||||||||||||||||||||||||||||||||||||||||
return DefineOwnProperty(O, P, { | ||||||||||||||||||||||||||||||||||||||||||||||||
'[[Configurable]]': true, | ||||||||||||||||||||||||||||||||||||||||||||||||
'[[Enumerable]]': false, | ||||||||||||||||||||||||||||||||||||||||||||||||
'[[Writable]]': true, | ||||||||||||||||||||||||||||||||||||||||||||||||
'[[Value]]': V | ||||||||||||||||||||||||||||||||||||||||||||||||
}); | ||||||||||||||||||||||||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+61
to
+68
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. this should also be |
||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||
var isObject = function (target) { | ||||||||||||||||||||||||||||||||||||||||||||||||
return target !== null && (typeof target === 'object' || typeof target === 'function'); | ||||||||||||||||||||||||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+70
to
+72
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. please use the inverse of |
||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||
var AsyncIteratorPrototype | ||||||||||||||||||||||||||||||||||||||||||||||||
= GetIntrinsic('%AsyncIteratorPrototype%', true) | ||||||||||||||||||||||||||||||||||||||||||||||||
|| (function () { | ||||||||||||||||||||||||||||||||||||||||||||||||
var result = {}; | ||||||||||||||||||||||||||||||||||||||||||||||||
if ($toStringTag) { | ||||||||||||||||||||||||||||||||||||||||||||||||
DefineOwnProperty(result, $toStringTag, { | ||||||||||||||||||||||||||||||||||||||||||||||||
'[[Writable]]': false, | ||||||||||||||||||||||||||||||||||||||||||||||||
'[[Enumerable]]': false, | ||||||||||||||||||||||||||||||||||||||||||||||||
'[[Configurable]]': true, | ||||||||||||||||||||||||||||||||||||||||||||||||
'[[Value]]': 'AsyncIterator' | ||||||||||||||||||||||||||||||||||||||||||||||||
}); | ||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||
if ($asyncIterator) { | ||||||||||||||||||||||||||||||||||||||||||||||||
CreateMethodProperty( | ||||||||||||||||||||||||||||||||||||||||||||||||
result, | ||||||||||||||||||||||||||||||||||||||||||||||||
$asyncIterator, | ||||||||||||||||||||||||||||||||||||||||||||||||
{ | ||||||||||||||||||||||||||||||||||||||||||||||||
'[Symbol.asyncIterator]': function () { | ||||||||||||||||||||||||||||||||||||||||||||||||
return this; | ||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||
}['[Symbol.asyncIterator]'] | ||||||||||||||||||||||||||||||||||||||||||||||||
); | ||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||
return result; | ||||||||||||||||||||||||||||||||||||||||||||||||
}()); | ||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+76
to
+98
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. this should be moved to a separate helpers file, that's tested independently. |
||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||
var AsyncFromSyncIteratorPrototype | ||||||||||||||||||||||||||||||||||||||||||||||||
= GetIntrinsic('%AsyncFromSyncIteratorPrototype%', true) | ||||||||||||||||||||||||||||||||||||||||||||||||
// eslint-disable-next-line max-lines-per-function | ||||||||||||||||||||||||||||||||||||||||||||||||
|| (function () { | ||||||||||||||||||||||||||||||||||||||||||||||||
var $Promise = GetIntrinsic('%Promise%', true); | ||||||||||||||||||||||||||||||||||||||||||||||||
if (!$Promise) { | ||||||||||||||||||||||||||||||||||||||||||||||||
return; | ||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||
var PromiseResolve = callBind(GetIntrinsic('%Promise.resolve%')); | ||||||||||||||||||||||||||||||||||||||||||||||||
var promiseProtoThen = callBound('%Promise.prototype.then%'); | ||||||||||||||||||||||||||||||||||||||||||||||||
var AsyncFromSyncIteratorContinuation = function AsyncFromSyncIteratorContinuation(result, promiseCapability) { | ||||||||||||||||||||||||||||||||||||||||||||||||
var done = !!result.done; | ||||||||||||||||||||||||||||||||||||||||||||||||
var value = result.value; | ||||||||||||||||||||||||||||||||||||||||||||||||
var valueWrapper = PromiseResolve($Promise, value); | ||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||
promiseProtoThen( | ||||||||||||||||||||||||||||||||||||||||||||||||
valueWrapper, | ||||||||||||||||||||||||||||||||||||||||||||||||
function onFulfilled(unwrappedValue) { | ||||||||||||||||||||||||||||||||||||||||||||||||
$apply( | ||||||||||||||||||||||||||||||||||||||||||||||||
promiseCapability['[[Resolve]]'], | ||||||||||||||||||||||||||||||||||||||||||||||||
undefined, | ||||||||||||||||||||||||||||||||||||||||||||||||
[{ value: unwrappedValue, done: done }] | ||||||||||||||||||||||||||||||||||||||||||||||||
); | ||||||||||||||||||||||||||||||||||||||||||||||||
}, | ||||||||||||||||||||||||||||||||||||||||||||||||
promiseCapability['[[Reject]]'] | ||||||||||||||||||||||||||||||||||||||||||||||||
); | ||||||||||||||||||||||||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||
var T = function T() {}; | ||||||||||||||||||||||||||||||||||||||||||||||||
T.prototype = AsyncIteratorPrototype; | ||||||||||||||||||||||||||||||||||||||||||||||||
// eslint-disable-next-line no-shadow | ||||||||||||||||||||||||||||||||||||||||||||||||
var AsyncFromSyncIteratorPrototype = new T(); | ||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||
CreateMethodProperty(AsyncFromSyncIteratorPrototype, 'next', function next(value) { | ||||||||||||||||||||||||||||||||||||||||||||||||
// eslint-disable-next-line no-invalid-this | ||||||||||||||||||||||||||||||||||||||||||||||||
var O = this; | ||||||||||||||||||||||||||||||||||||||||||||||||
return new Promise(function (resolve, reject) { | ||||||||||||||||||||||||||||||||||||||||||||||||
internalSlot.assert(O, '[[SyncIteratorRecord]]'); | ||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||
var syncIteratorRecord = internalSlot.get(O, '[[SyncIteratorRecord]]'); | ||||||||||||||||||||||||||||||||||||||||||||||||
var result = $apply( | ||||||||||||||||||||||||||||||||||||||||||||||||
syncIteratorRecord['[[NextMethod]]'], | ||||||||||||||||||||||||||||||||||||||||||||||||
syncIteratorRecord['[[Iterator]]'], | ||||||||||||||||||||||||||||||||||||||||||||||||
[value] | ||||||||||||||||||||||||||||||||||||||||||||||||
); | ||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||
if (!isObject(result)) { | ||||||||||||||||||||||||||||||||||||||||||||||||
throw new $TypeError('iterator next must return an object'); | ||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||
return AsyncFromSyncIteratorContinuation(result, { | ||||||||||||||||||||||||||||||||||||||||||||||||
'[[Resolve]]': resolve, | ||||||||||||||||||||||||||||||||||||||||||||||||
'[[Reject]]': reject | ||||||||||||||||||||||||||||||||||||||||||||||||
}); | ||||||||||||||||||||||||||||||||||||||||||||||||
}); | ||||||||||||||||||||||||||||||||||||||||||||||||
}); | ||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||
CreateMethodProperty(AsyncFromSyncIteratorPrototype, 'return', { | ||||||||||||||||||||||||||||||||||||||||||||||||
'return': function (value) { | ||||||||||||||||||||||||||||||||||||||||||||||||
var O = this; | ||||||||||||||||||||||||||||||||||||||||||||||||
return new Promise(function (resolve, reject) { | ||||||||||||||||||||||||||||||||||||||||||||||||
internalSlot.assert(O, '[[SyncIteratorRecord]]'); | ||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||
var syncIterator = internalSlot.get(O, '[[SyncIteratorRecord]]')['[[Iterator]]']; | ||||||||||||||||||||||||||||||||||||||||||||||||
var returnMethod = syncIterator['return']; | ||||||||||||||||||||||||||||||||||||||||||||||||
if (returnMethod != null) { | ||||||||||||||||||||||||||||||||||||||||||||||||
if (!isCallable(returnMethod)) { | ||||||||||||||||||||||||||||||||||||||||||||||||
throw new $TypeError('iterator return is not a function'); | ||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||
return resolve({ | ||||||||||||||||||||||||||||||||||||||||||||||||
value: value, | ||||||||||||||||||||||||||||||||||||||||||||||||
done: true | ||||||||||||||||||||||||||||||||||||||||||||||||
}); | ||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||
var result = $apply(returnMethod, syncIterator, [value]); | ||||||||||||||||||||||||||||||||||||||||||||||||
if (!isObject(result)) { | ||||||||||||||||||||||||||||||||||||||||||||||||
throw new $TypeError('iterator return must return an object'); | ||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||
return AsyncFromSyncIteratorContinuation(result, { | ||||||||||||||||||||||||||||||||||||||||||||||||
'[[Resolve]]': resolve, | ||||||||||||||||||||||||||||||||||||||||||||||||
'[[Reject]]': reject | ||||||||||||||||||||||||||||||||||||||||||||||||
}); | ||||||||||||||||||||||||||||||||||||||||||||||||
}); | ||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||
}['return']); | ||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||
CreateMethodProperty(AsyncFromSyncIteratorPrototype, 'throw', { | ||||||||||||||||||||||||||||||||||||||||||||||||
'throw': function (value) { | ||||||||||||||||||||||||||||||||||||||||||||||||
var O = this; | ||||||||||||||||||||||||||||||||||||||||||||||||
return new Promise(function (resolve, reject) { | ||||||||||||||||||||||||||||||||||||||||||||||||
internalSlot.assert(O, '[[SyncIteratorRecord]]'); | ||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||
var syncIterator = internalSlot.get(O, '[[SyncIteratorRecord]]')['[[Iterator]]']; | ||||||||||||||||||||||||||||||||||||||||||||||||
var throwMethod = syncIterator['return']; | ||||||||||||||||||||||||||||||||||||||||||||||||
if (throwMethod != null) { | ||||||||||||||||||||||||||||||||||||||||||||||||
if (!isCallable(throwMethod)) { | ||||||||||||||||||||||||||||||||||||||||||||||||
throw new $TypeError('iterator throw is not a function'); | ||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||
throw value; | ||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||
var result = $apply(throwMethod, syncIterator, [value]); | ||||||||||||||||||||||||||||||||||||||||||||||||
if (!isObject(result)) { | ||||||||||||||||||||||||||||||||||||||||||||||||
throw new $TypeError('iterator throw must return an object'); | ||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||
return AsyncFromSyncIteratorContinuation(result, { | ||||||||||||||||||||||||||||||||||||||||||||||||
'[[Resolve]]': resolve, | ||||||||||||||||||||||||||||||||||||||||||||||||
'[[Reject]]': reject | ||||||||||||||||||||||||||||||||||||||||||||||||
}); | ||||||||||||||||||||||||||||||||||||||||||||||||
}); | ||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||
}['throw']); | ||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||
// eslint-disable-next-line consistent-return | ||||||||||||||||||||||||||||||||||||||||||||||||
return AsyncFromSyncIteratorPrototype; | ||||||||||||||||||||||||||||||||||||||||||||||||
}()); | ||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+103
to
+220
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. as should this. |
||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||
var AsyncFromSyncIteratorConstructor; | ||||||||||||||||||||||||||||||||||||||||||||||||
if (AsyncFromSyncIteratorPrototype) { | ||||||||||||||||||||||||||||||||||||||||||||||||
AsyncFromSyncIteratorConstructor = function AsyncFromSyncIterator(syncIteratorRecord) { | ||||||||||||||||||||||||||||||||||||||||||||||||
internalSlot.set(this, '[[SyncIteratorRecord]]', syncIteratorRecord); | ||||||||||||||||||||||||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||||||||||||||||||||||||
AsyncFromSyncIteratorConstructor.prototype = AsyncFromSyncIteratorPrototype; | ||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||
module.exports = AsyncFromSyncIteratorConstructor; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
i'm very confused why we'd want a constructor, or to encourage use of
new
.