Как обработать ошибку socket hang up?

В Украине у нас есть API налоговой. Иногда сервер ложится, так что это socket hang up - это нормально. И мне нужно обработать эту ошибку, потому что моя программа останавливается. Я пробовал несколько вариантов, но ничего не работает.
export function query(method, toUrl, headers, payload, cb) {
    try {
        let parsed = url.parse(toUrl);
        let req = http.request({
            host: parsed.host,
            path: parsed.path,
            headers: headers,
            method: method,
        }, res => {
            let chunks = [];
            res.on("data", chunk => {
                chunks.push(chunk);
            });
            res.on("end", () => {
                cb(Buffer.concat(chunks));
            });
            res.on("error", () => {
                console.log("SOCKET ERR!!!");
                req.end();
                cb(null);
            });
        });
        req.on("error", e => {
            console.log("SOCKET ERR!!!");
            req.end();
            cb(null);
        });
        req.write(payload);
        req.end();
    }
    catch(e) {
        console.log("Error in query function: " + e.message);
    }
}

Попробовал еще так:
process.on('uncaughtException', (err) => {
    console.log(err);
})

Но программа выкидывает ошибку и просто останавливается. функция queryпросто не ловит ошибки. Только process.on ловит ошибку, но все равно останавливается.
Еще пробовал так:
process.on('uncaughtException', (err) => {
    console.log(err);
    startAsyncTasksFunction() // this is my main function
})

То есть когда выкидывает uncaughtException, я просто запускаю основную функцию программы. Приложение не останавливается, и у меня запущено 2 startAsyncTasksFunction, что вызывает еще больше проблем.
  • Вопрос задан
  • 373 просмотра
Пригласить эксперта
Ответы на вопрос 1
@arthurlomakin Автор вопроса
Решил проблему с помощью PM2 Manager. Короче, буду переходить на .NET, так как все равно такой вариант не устраивает.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы