A `Set` implementation must not "protect" the user against a missing `iterable[Symbol.iterator]`; the spec defines behaviour that should be followed: 

Currently: 
```js
if (iterable !== null && iterable !== undefined) {
  var iter = iterable[Symbol.iterator];
  if (iter !== undefined) {
    for (var item of iterable) {
      this.add(item);
    }
  }
}
```

Should be: 

```js
if (iterable !== null && iterable !== undefined) {
  for (var item of iterable) {
    this.add(item);
  }
}
```

And the same change should be made to existing `Map` constructor because it's also wrong.