async function getCss(document, options = {}) {
  const {css} = options;
  let stylesheets = [];

  if (checkCssOption(css)) {
    const cssArray = Array.isArray(css) ? css : [css];

    // merge css files & css source strings passed as css option
    const filesRaw = await Promise.all(
      cssArray.map((value) => {
        if (isCssSource(value)) {
          return Buffer.from(value);
        }

        return glob(value, options);
      })
    );

    const files = filesRaw.flat();
    stylesheets = await mapAsync(files, (file) => getStylesheet(document, file, options));
    debug('(getCss) css option set', files, stylesheets);
  } else {
    stylesheets = await mapAsync(document.stylesheets, (file, index) => {
      const media = (document.stylesheetsMedia || [])[index];
      return getStylesheet(document, file, {...options, media});
    });
    debug('(getCss) extract from document', document.stylesheets, stylesheets);
  }

  return stylesheets
    .filter((stylesheet) => !stylesheet.isNull())
    .map((stylesheet) => stylesheet.contents.toString())
    .join(os.EOL);
}
Get css for document
@param {Vinyl} document Vinyl representation of HTML document
@param {object} options Critical options
@returns {Promise<string>} Css string unoptimized, Multiple stylesheets are concatenated with EOL