MichaƂ Wadas (2015-07-13T11:18:35.000Z)
Steps to reproduce:

let p = {
0: 'a',
1: 'b',
2: 'c',
length: Math.pow(2,32)+1
};
Array.prototype.forEach.call(p, (el)=>console.log(el)); // logs only 'a'

The cause of this behaviour is obvious for anyone that reads
specification - every native Array.prototype methods perform abstract
operation `ToUint32(this.length).

Anyway - this behaviour obviously counters intuition. I think it would
be totally OK to allow native methods to throw when .length > 2^32,
d at domenic.me (2015-07-17T19:48:55.052Z)
Steps to reproduce:

```js
let p = {
0: 'a',
1: 'b',
2: 'c',
length: Math.pow(2,32)+1
};
Array.prototype.forEach.call(p, (el)=>console.log(el)); // logs only 'a'
```

The cause of this behaviour is obvious for anyone that reads
specification - every native Array.prototype methods perform abstract
operation `ToUint32(this.length).

Anyway - this behaviour obviously counters intuition. I think it would
be totally OK to allow native methods to throw when .length > 2^32,