Ваш код веток.
Не обращая внимания на детали, у вас есть:
let a = <Promise>; // root
a.then(...); // branch_1
a.catch(...); // branch_2
Таким образом, несмотря на то, что вы ловите ошибки, возникающие в a
, любая ошибка, возникающая в ветви 1, не будет обработана.Отсюда предупреждение
Сравните это с:
let a = <Promise>; // root
a.then(...).catch(...); // branch
или
<Promise>.then(...).catch(...); // no assignment necessary
Итак, вы можете написать:
module.exports = function(context) {
return fetch(url)
.then(res => {
if(res.status!=200) {
throw new Error(res.statusText);
} else {
context.done(null, res.body);
}
})
.catch(err => {
console.log(err)
throw new Error(err)
});
};
В качестве альтернативы, в зависимости ото необходимом разделении обязанностей между модулем и абонентом (ями) ...
module.exports = function(context) {
return fetch(url)
.then(res => {
if(res.status!=200) {
throw new Error(res.statusText);
} else {
return res;
}
});
};
... и вызовом .context.done(null, res.body);
при .then()
обратном вызове в вызывающем абоненте.
Inв обоих случаях, с включенным return
, вызывающей стороне нужно будет перехватывать ошибки, в противном случае вы снова получите необработанное предупреждение об ошибке.