`for-of` will automatically call `iterable[Symbol.iterator]` and is expected to throw a `TypeError` if `iterable[Symbol.iterator]` doesn't actually exist, see: http://people.mozilla.org/~jorendorff/es6-draft.html#sec-getiterator step 1.c