Похоже, что jQuery теперь отлично справляется с междоменными и однотипными запросами. Для междоменных запросов, он добавит тег сценария и подпишется на события error и load и соответственно вызовет ваши обработанные и ответные вызовы error, это ошибка только в случае сбоя запроса, ошибки при оценке сценария все равно будут считаться успешными, поскольку запрос касается. Для того же источника, он выполнит XHR-запрос, а затем сделает globalEval, и, как только он будет сделан, вызовет ваш обратный вызов done, если что-то не получится в процессе, он вызовет ваш обратный вызов ошибки.
Использование XHR имеет несколько проблем, оно ломает отладчик, исходные карты и основывается на globalEval, который имеет проблемы с ContentSecurityPolicy. Для этой согласованности мы просто добавляем тег сценария при загрузке сценариев.
var scriptElement = $("<script>").prop({src: url, async: true});
scriptElement.one('load', ()=> ...);
scriptElement.one('error', (evt)=> ...);
document.head.appendChild(scriptElement[0]);
Если вы хотите сделать это без jQuery, найдите динамически импортируемые скрипты в этой статье
Надеюсь, это поможет.