Как отладить мой асинхронный код, основанный на обещаниях, если библиотека поглощает все исключения?

Проблема

JSFiddle: http://jsfiddle.net/missingno/Gz8Pe/2/

У меня есть код, который выглядит так:

var d = new Deferred();
d.resolve(17);
return d.then(function(){
     //do some stuff...
})
.then(function(){
    var obj = a_funtion_that_returns_null_on_IE();
    var x = obj.some_property; //BOOM!
});

Проблема в том, что когда я нахожусь на IE все, что я вижу, это'obj' is null or not an object ошибки,без какой-либо ссылки на соответствующий номер строки и без остановки отладчика на ошибочной строке (как хотелось бы)

Такого рода проблема делает код болезненным для отладки, и единственные решения, о которых я могу подумать сейчас (возиться с библиотекой потока управления или прибегнуть к пошаговой отладке с помощью отладчика или console.log), - это вещи, которые я предпочел бы не делать.

Я думаю, что происходит

Чтобы позволить ошибкам быть добавленными после запуска цепочки,then будет преимущественно перехватывать любые исключения, вызванные обратными вызовами. Я думаю, что это причина того, что отладчик IE не останавливается на ошибке или показывает обычное сообщение об ошибке с номером строки в нем.

Сообщения об ошибках без номеров строк поступают из библиотеки потока управления: она предоставляетdeferredOnError ловушка, которая вызывается всякий раз, когда исключение перехватывается и сохраняется для дальнейшего использования, а поведение по умолчанию - console.erroring объекта Error

dojo.config.deferredOnError = function(err){
    //a chance to log the exception after it is captured by "then"
    //or do other things with it
    console.error(err);
}

К сожалению, я не мог найти способ получить номер строки или трассировку стека из объекта ошибки в IE, и ловушка вызывается так, что я не могу просто перебросить исключение и позволить ему всплыть на верхний уровень.

Что я хочу

Я хочу иметь лучший способ отладки асинхронного кода, а затем пошагово идти вместе с отладчиком. В лучшем случаеспособ остановить отладчик исключений (как это происходит с необработанными исключениями)или же по крайней мере, способполучить номера строк или трассировки стека от объекта Error это было брошено.

Ответы на вопрос(3)

Ваш ответ на вопрос