Because `wire.peerPieces` is a sparse array. And because of `array.every()` implementation.
```
var a = [];
a[2] = true;
a[5] = true;
a.every(function(item) { return item; }); // true \o/
```

Moreover, `wire.peerPieces` is not guaranteed to be as long as the number of pieces in the torrent. This is why I use `torrent.pieces.length`.

I could cache how much pieces are already checked to start the loop from the first non-available piece, right. However once the array is fully checked and the peer is considered a seeder, we should no longer receive `have` or `bitfield` messages.