| 'use strict'; | 
| var call = require('../internals/function-call'); | 
| var AsyncFromSyncIterator = require('../internals/async-from-sync-iterator'); | 
| var anObject = require('../internals/an-object'); | 
| var getIterator = require('../internals/get-iterator'); | 
| var getIteratorDirect = require('../internals/get-iterator-direct'); | 
| var getMethod = require('../internals/get-method'); | 
| var wellKnownSymbol = require('../internals/well-known-symbol'); | 
|   | 
| var ASYNC_ITERATOR = wellKnownSymbol('asyncIterator'); | 
|   | 
| module.exports = function (it, usingIterator) { | 
|   var method = arguments.length < 2 ? getMethod(it, ASYNC_ITERATOR) : usingIterator; | 
|   return method ? anObject(call(method, it)) : new AsyncFromSyncIterator(getIteratorDirect(getIterator(it))); | 
| }; |