async fetchAndDownloadFile(url) {
        const response = await fetch(url);
        const blob = await response.blob();

        const anchor = document.createElement('a');

        anchor.href = window.URL.createObjectURL(blob);
        anchor.download = /filename="(.*)"/.exec(response.headers.get('Content-Disposition'))[1];

        document.body.append(anchor);

        anchor.click();

        document.body.removeChild(anchor);
    }
This method will fetch a file from the server and then download it, resolving
once the initial fetch is complete, allowing it to be used with loading spinners.

@param {string} url - The URL of the file to download
@returns {Promise<void>}