Почему я не могу просто выбросить Error
внутри обратного вызова catch и позволить процессу обрабатывать ошибку, как если бы она находилась в любой другой области?
Если я не делаю console.log(err)
, ничего не распечатывается, и я ничего не знаю о том, что произошло. Процесс заканчивается...
Пример:
function do1() {
return new Promise(function(resolve, reject) {
throw new Error('do1');
setTimeout(resolve, 1000)
});
}
function do2() {
return new Promise(function(resolve, reject) {
setTimeout(function() {
reject(new Error('do2'));
}, 1000)
});
}
do1().then(do2).catch(function(err) {
//console.log(err.stack); // This is the only way to see the stack
throw err; // This does nothing
});
Если обратные вызовы выполняются в основном потоке, почему Error
проглатывается черной дырой?