async HttpRequested(msg) {
    const { id, data } = msg;
    const req = requests[id];
    if (!req) {
      if (process.env.DEV) console.warn('[HttpRequested][content]: no request for id', id);
      return;
    }
    if (hasOwnProperty(msg, 'chunk')) {
      processChunk(req, data, msg);
      return;
    }
    let response = data?.[kResponse];
    if (response != null) {
      if (msg.blobbed) {
        response = await importBlob(response, isBlobXhr(req));
        sendCmd('RevokeBlob', response);
      } else if (msg.chunked) {
        processChunk(req, response);
        response = req[CHUNKS];
        delete req[CHUNKS];
        if (isBlobXhr(req)) {
          response = new SafeBlob([response], { type: msg.contentType });
        } else if (req[kXhrType]) {
          response = response::getTypedArrayBuffer();
        } else {
          // sending text chunks as-is to avoid memory overflow due to concatenation
        }
      }
      data[kResponse] = response;
    }
    if (msg.type === LOADEND) {
      delete requests[msg.id];
    }
    sendHttpRequested(msg, req.realm);
  }
@param {GMReq.Message.BG} msg
@returns {Promise<void>}