Вариант axiosa не подходит так как при валидации ошибок сообщения ошибок прилетают в формате blob
Loaded: {{loaded}} bytes {{length ? "of " + length: ""}}content-length, так и сам ответ такой маленький (4 КБ, т.к. передается сжатым, content-encoding: br), что он попадает целиком в один вызов onProgress, там не много смысла в полосе загрузки, основанной на процессе загрузки байтов.
GM.xmlHttpRequest/GM_xmlHttpRequest.Вот тебе простой враппер для него а-ля
fetch:Либо скачивай из бекграунд скрипта, если это расширение.