docs: function iterator(entry, nextIterator) {
  
          var url = entry.request.url;
  
          var isLocalUserEntryFile = url.indexOf(options.resourceDomainBase + '/user-entry.js') === 0;
          var isNotBootstrapFiles = url.indexOf(options.resourceDomainBase) !== 0;
          var isServedZipContent = url.indexOf(options.resourceDomainBase + '/zip') === 0;
  
  
          // filter out internals
          var isExternalContent =
              url.indexOf('http') === 0 &&
              (isLocalUserEntryFile || isServedZipContent || isNotBootstrapFiles) &&
              url.indexOf('es5-shim.min.js') < 0;
  
          if (isExternalContent !== true){
              return nextIterator();
          }
  
          var responseCounter = 2;
          var output = {
              'time': entry.request.time,
              'url': url
          };
  
          if (harConfig.checkTls && isLocalUserEntryFile !== true && isServedZipContent !== true) {
              responseCounter += 1;
              request(url.replace(/^http:/i,'https:'), requestOptions, tlsHandler);
          }
  
  
          request(url, requestOptions, gzipHandler);
          request(url, requestOptionsWithoutGzip, rawHandler);
  
          function done(err) {
              if (err){
                  // errors here might come from gzip or raw handler -
                  output.requestError = true;
                  output.error = err;
              }
  
              responseCounter--;
              if (responseCounter <= 0) {
                  rawFileData[url] = output;
                  nextIterator();
              }
          }
  
          function tlsHandler(err, res) {
              if (err){
                  output.validTls = false;
                  output.tlsErrorMessage = err.message;
                  output.tlsResponseCode = res && res.statusCode;
                  return done();
              }
  
              output.validTls = !(res && res.statusCode >= 400);
              output.tlsResponseCode = res.statusCode;
  
              done();
          }
  
          function rawHandler(err, res, body) {
  
              if (err || !body){
                  return done(err);
              }
  
              if (res && res.statusCode >= 400){
                  return done(new Error('Request error'));
              }
  
              output.base64Content = body.toString('base64');
              output.unzippedSize = body.length;
  
              // find compression target
              zlib.gzip(body, function (err, buffer) {
                  var compressionPossible = body.length - buffer.length;
  
                  //entry.response.content.compression = compressionPossible;
                  output.aproxCompressionPossible = compressionPossible;
                  output.aproxCompressedSize = buffer.length;
  
                  done();
              });
          }
  
          function gzipHandler(err, res, body) {
  
              if (err || !body){
                  //console.log('gzipHandler', err);
                  return done(err);
              }
  
              if (res && res.statusCode >= 400){
                  return done(new Error('Request error'));
              }
  
              // HAr correction phantom sizes are buggy at best.
              // entry.response.bodySize = body.length;
              // entry.response.content.size = body.length;
  
              output.redirects = res.request.redirects;
              output.contentType = res.headers['content-type'];
              output.contentLength = res.headers['content-length'];
              output.bodyLength = body.length;
  
              var encoding = res.headers['content-encoding'];
              output.compressed = !! (encoding && (/gzip/i).test(encoding));
  
              done();
          }
  
      }