Я использую сторонний модуль, который оборачивается вокруг их API.У меня есть следующий код:
const api = require('3rdpartyapi');
async function callAPI(params) {
try {
let result = await api.call(params);
return result;
}
catch(err) {
throw err; //will handle in other function
}
}
async function doSomething() {
try {
//...do stuff
let result = await callAPI({a:2,b:7});
console.log(result);
}
catch(err) {
console.error('oh no!', err);
}
}
Несмотря на оба блока try
- catch
, сторонний API, когда он теряет соединение с homebase (случается довольно часто :(), взрывается с:
(node:13128) UnhandledPromiseRejectionWarning: FetchError: request to https://www.example.com failed, reason: getaddrinfo ENOTFOUND
Затем:
UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
Почему никто из моих try
- catch
не поймает это? Что именно не обрабатывается и как на самом деле с этим обращаться?