I'm trying to get the following async generator to work:

```js
class MyIterator {
  constructor(m) {
    this.collection = m;
  }

   async *[Symbol.iterator]() {
      for (let item of this.collection) {
        const resultItem = await Promise.resolve(item)
        console.log("item: ", resultItem)
        yield resultItem
      }
  }
}
(async () => {
  const iterator = new MyIterator([1,2,3])
  let times = 0
  for await (let thing of iterator) {
    console.log("thing: ", thing)

    // this is here to avoid an infinite loop
    times++
    if (times > 1000) break
  }
})()

```

But it ends up in an infinite loop, and `thing` is always undefined.

```
item: 1
thing: undefined
item: 2
thing: undefined
item: 3
thing: undefined (x999)

```

---

I've tried a similar code, but this time without the `Promise/async` behaviour, and it seems to work just fine.

```js
class MyIterator {
  constructor(m) {
    this.collection = m;
  }

   *[Symbol.iterator]() {
      for (let item of this.collection) {
        console.log("item: ", item)
        yield item
      }
  }
}

const iterator = new MyIterator([1,2,3])
for (let thing of iterator) {
  console.log("thing: ", thing)
}

```

```
item: 1
thing: 1
item: 2
thing: 2
item: 3
thing: 3

```