<!doctype html>
<script>
const baseLocation = window.location;
const workerScript =
  `self.onmessage = async (e) => {
    const url = new URL(e.data, '${baseLocation}').href;
    const response = await fetch(url);
    const text = await response.text();
    self.postMessage(text);
  };`;
const blob = new Blob([workerScript], { type: 'text/javascript' });
const blobUrl = URL.createObjectURL(blob);
const worker = new Worker(blobUrl);

function fetch_in_worker(url) {
  return new Promise((resolve) => {
    worker.onmessage = (e) => resolve(e.data);
    worker.postMessage(url);
  });
}
</script>
