title: Symbol.iterator in Internet Explorer doesn't work
body: <p>In an AngularJS web app, I have this block of JS code:</p>
  
  <pre><code>var _loop = function _loop(file) {
    // For each file a reader (to read the base64 URL)
    // and a promise (to track and merge results and errors)
    var promise = new Promise(function (resolve, reject) {
      var reader = new FileReader();
      reader.addEventListener('load', function (event) {
        var type = void 0;
        var name = file.name;
  
        // Try to find the MIME type of the file.
        var match = mimeTypeMatcher.exec(file.type);
        if (match) {
          type = match[1]; // The first part in the MIME, "image" in image/png
        } else {
          type = file.type;
        }
  
        // If it's an image, try to find its size
        if (type === 'image') {
          var data = {
            src: reader.result,
            name: name,
            type: type,
            height: 0,
            width: 0
          };
  
          var image = new Image();
          image.addEventListener('error', function (error) {
            reject(error);
          });
          image.addEventListener('load', function () {
            data.height = image.height;
            data.width = image.width;
            resolve(data);
          });
          image.src = data.src;
        } else if (type) {
          // Not an image, but has a type
          resolve({
            src: reader.result,
            name: name,
            type: type
          });
        } else {
          // No type found, resolve with the URL only
          resolve(reader.result);
        }
      });
      reader.addEventListener('error', function (error) {
        reject(error);
      });
      reader.addEventListener('abort', function (error) {
        reject('Aborted');
      });
  
      reader.readAsDataURL(file);
    });
  
    promises.push(promise);
  };
  
  var _iteratorNormalCompletion = true;
  var _didIteratorError = false;
  var _iteratorError = undefined;
  
  try {
    for (var _iterator = files[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
      var file = _step.value;
  
      _loop(file);
    }    } catch (err) {
    _didIteratorError = true;
    _iteratorError = err;
  } finally {
    try {
      if (!_iteratorNormalCompletion &amp;&amp; _iterator.return) {
        _iterator.return();
      }
    } finally {
      if (_didIteratorError) {
        throw _iteratorError;
      }
    }
  }
  </code></pre>
  
  <p>and in Internet Explorer 11 in the last block:</p>
  
  <pre><code>  for (var _iterator = files[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
      var file = _step.value;
  
      _loop(file);
    }
  </code></pre>
  
  <p>I get this error: </p>
  
  <blockquote>
    <p><strong>the object does not support the property or the 'jscomp_symbol_iterator0' method</strong></p>
  </blockquote>
  
  <p>I read that IE doesn't support Symbol. So, I tried to rewrite the code into:</p>
  
  <pre><code>for (var _iterator = files.length, _step; !(_iteratorNormalCompletion = (_step = _iterator[_iterator++]).done); _iteratorNormalCompletion = true) {
  var file = _step.value;
  
  _loop(file);
  </code></pre>
  
  <p>}</p>
  
  <p>But I have this error: </p>
  
  <blockquote>
    <p>Can not read property "done" of undefined</p>
  </blockquote>
  
  <p>So, I know that it is not supported by IE. But is there an alternative to write that loop in another way, supported by IE?</p>