code: function GetIterator(obj) {
              var method = GetMethod(obj, iteratorSymbol);
              if (!IsCallable(method))
                  throw new TypeError(); // from Call
              var iterator = method.call(obj);
              if (!IsObject(iterator))
                  throw new TypeError();
              return iterator;
          }
docs: 7.4 Operations on Iterator Objects https://tc39.github.io/ecma262/#sec-operations-on-iterator-objects