| 12345678910111213141516171819202122232425262728 | var call = require('../internals/function-call');var isCallable = require('../internals/is-callable');var toObject = require('../internals/to-object');var getIteratorDirect = require('../internals/get-iterator-direct');var getIteratorMethod = require('../internals/get-iterator-method');var getMethod = require('../internals/get-method');var wellKnownSymbol = require('../internals/well-known-symbol');var AsyncFromSyncIterator = require('../internals/async-from-sync-iterator');var ASYNC_ITERATOR = wellKnownSymbol('asyncIterator');module.exports = function from(obj) {  var object = toObject(obj);  var alreadyAsync = true;  var method = getMethod(object, ASYNC_ITERATOR);  var iterator;  if (!isCallable(method)) {    method = getIteratorMethod(object);    alreadyAsync = false;  }  if (isCallable(method)) {    iterator = call(method, object);  } else {    iterator = object;    alreadyAsync = true;  }  return getIteratorDirect(alreadyAsync ? iterator : new AsyncFromSyncIterator(getIteratorDirect(iterator)));};
 |