Для Firefox(работает только в нем) удалось подобрать такое решение
Тоже выглядит как хак, но уже более логичный
// library code
var iframe = document.createElement('iframe');
document.body.appendChild(iframe);
var _window = iframe.contentWindow;
var callWithErrorHandling = _window.eval(`
(function foo(func) {
try {
return func();
} catch(e) {
throw e;// Бонус от Firefox - здесь отладчик повторно не будет останавливаться
}
})
`);
document.body.removeChild(iframe);
// user code
function externalCodeWithError() {
throw 123;// здесь будет остановка при включенном "Pause on exceptions" и выключенном "Pause on caught exeptions"
}
callWithErrorHandling(externalCodeWithError);