async function requestNewer(url, opts) {
  if (isDataUri(url)) {
    return;
  }
  let multi, modOld, modDate;
  const isLocal = !isRemote(url);
  if (!isLocal && opts && (multi = opts[MULTI])
  && isObject(modOld = await storage.mod.getOne(url))) {
    [modOld, modDate] = modOld;
  }
  if (multi === AUTO && modDate > Date.now() - getUpdateInterval()) {
    return;
  }
  for (const get of multi ? [0, 1] : [1]) {
    if (modOld || get) {
      const req = await (isLocal || isCdnUrlRe.test(url) ? request : requestLimited)(url,
        get ? opts
          : { ...opts, ...NO_CACHE, method: 'HEAD' });
      const { headers } = req;
      const mod = (
        headers.get('etag')
        || +new Date(headers.get('last-modified'))
        || +new Date(headers.get('date'))
      );
      if (mod && mod === modOld) {
        return;
      }
      if (get) {
        if (mod) storage.mod.setOne(url, [mod, Date.now()]);
        else if (modOld) storage.mod.remove(url);
        return req;
      }
    }
  }
}
@param {string} url
@param {VMReq.OptionsMulti} [opts]
@return {Promise<VMReq.Response> | void}