Proxying Request-обещание включить Retry - Реализация не работает - PullRequest
0 голосов
/ 22 октября 2019

Я использую запрос-обещание в своем приложении Node.js для использования серверных служб, заметил, что служба возвращает ошибку "зависание сокета". Основываясь на рекомендации повторять такие неудачные запросы, я определил прокси-сервер для «запроса-обещания», добавив логику повторных попыток, используя promise-retry . Из кода, используя этот прокси вместо запроса-обещания. Повторная попытка происходит, но заметил, что ни одна из них не была успешной - всегда выдает «повторные запросы завершились неудачно» с ошибкой, которую я выдаю при неудачной повторной попытке. Я хотел знать, был ли неправильный способ определения прокси . Я вставляю код (убрал операторы импорта). Благодарим за помощь в выявлении любой ошибки кодирования.

const rpProxy = {
    apply: (target, thisArg, argumentsList) => {
        return requestPromiseWithRetry(target(argumentsList[0]));
    }

}
export const requestPromiseWithRetry = (promise: Promise<any>, retryOptions?): Promise<any> => {
var options = {retries: 2, minTimeout: 300}

return promiseRetry(options, function (retry, number) {
    return promise
        .catch((err) => {
            if(err.message && err.message.indexOf("socket hang up")>-1){
                console.log(err);
                retry(err);
            }
            throw err;
        })
}).then((value) => {
    return value;
}, (err) => {
    throw new Error(`retried requests failed with ${err.message}`);
});
}
export const rpWithRetry = new Proxy(rp, rpProxy);
...