Thinking about this again today, I think these need to be separate statements to actually detect overflow.  Here's my "proof by example" from the JS console:

```javascript
var v = new Uint32Array(1); 
v[0] = Math.pow(2, 32) - 1;
// v[0] => 4294967295
var x = ++v[0];
// x => 4294967296
// v[0] => 0
```

The increment will be done in 64-bit `Number` land on `key`, not in 32-bit `Uint32` land.  @pjcozzi  I'll push a fix.