As you discovered, JavaScript interrupt almost always includes exceptions. If you really can't change the wrapper, you may have to resort to something more extreme. One (evil) way to kill a script is to convince the browser that it takes too long to run an endless loop:
function callFunc() {
Modern browsers will allow the user to kill the script after a while. Of course, this will make your site look broken, but it should give you the leverage you need to get the best API in place.
If the busy cycle is too extreme, you can replace the simple add-on with a plug-in sleep, or perhaps a synchronous network request, which takes a very long time, wrapped in its own try / catch protection network.
source share