promise.js
function CreateArrayIterator ( array, kind ) {
    var O = ToObject(array),
      iterator = Object.create(ArrayIteratorPrototype);
    defineInternal(iterator, '[[IteratedObject]]', O);
    defineInternal(iterator, '[[ArrayIteratorNextIndex]]', 0);
    defineInternal(iterator, '[[ArrayIteratorKind]]', kind);
    return iterator;
  }
function CreateArrayIterator ( array, kind ) {
    var O = ToObject(array),
      iterator = Object.create(ArrayIteratorPrototype);
    defineInternal(iterator, '[[IteratedObject]]', O);
    defineInternal(iterator, '[[ArrayIteratorNextIndex]]', 0);
    defineInternal(iterator, '[[ArrayIteratorKind]]', kind);
    return iterator;
  }
22.1.5.1 CreateArrayIterator Abstract Operation