whole_func_string: function init(files, options, callback) {
  
      if (_.isFunction(options)) {
          /* There were no options, this argument is actually the callback */
          callback = options;
          options = {};
      } else if (!_.isFunction(callback)) {
          throw new TypeError('UnCSS: expected a callback');
      }
  
      /* Try and read options from the specified uncssrc file */
      if (options.uncssrc) {
          try {
              /* Manually-specified options take precedence over uncssrc options */
              options = _.merge(utility.parseUncssrc(options.uncssrc), options);
          } catch (err) {
              if (err instanceof SyntaxError) {
                  callback(new SyntaxError('UnCSS: uncssrc file is invalid JSON.'));
                  return;
              }
              callback(err);
              return;
          }
      }
  
      /* Assign default values to options, unless specified */
      options = _.defaults(options, {
          csspath: '',
          ignore: [],
          media: [],
          timeout: 0,
          report: false,
          ignoreSheets: [],
          html: files,
          banner: true,
          // gulp-uncss parameters:
          raw: null,
          userAgent: 'uncss',
          inject: null
      });
  
      process(options).then(([css, report]) => callback(null, css, report), callback);
  }
func_code_string: function init(files, options, callback) {
  
      if (_.isFunction(options)) {
          /* There were no options, this argument is actually the callback */
          callback = options;
          options = {};
      } else if (!_.isFunction(callback)) {
          throw new TypeError('UnCSS: expected a callback');
      }
  
      /* Try and read options from the specified uncssrc file */
      if (options.uncssrc) {
          try {
              /* Manually-specified options take precedence over uncssrc options */
              options = _.merge(utility.parseUncssrc(options.uncssrc), options);
          } catch (err) {
              if (err instanceof SyntaxError) {
                  callback(new SyntaxError('UnCSS: uncssrc file is invalid JSON.'));
                  return;
              }
              callback(err);
              return;
          }
      }
  
      /* Assign default values to options, unless specified */
      options = _.defaults(options, {
          csspath: '',
          ignore: [],
          media: [],
          timeout: 0,
          report: false,
          ignoreSheets: [],
          html: files,
          banner: true,
          // gulp-uncss parameters:
          raw: null,
          userAgent: 'uncss',
          inject: null
      });
  
      process(options).then(([css, report]) => callback(null, css, report), callback);
  }
func_documentation_string: Main exposed function.
  Here we check the options and callback, then run the files through jsdom.
  @param  {Array}    files     Array of filenames
  @param  {Object}   [options] options
  @param  {Function} callback(Error, String, Object)