diff --git a/src/middlewares/batch.js b/src/middlewares/batch.js index 0df9a3b..a117666 100644 --- a/src/middlewares/batch.js +++ b/src/middlewares/batch.js @@ -164,7 +164,13 @@ function prepareNewBatcher(next, opts): Batcher { batcher.acceptRequests = false; sendRequests(batcher.requestList, next, opts) .then(() => finalizeUncompleted(batcher.requestList)) - .catch(() => finalizeUncompleted(batcher.requestList)); + .catch((e) => { + if (e && e.name === 'AbortError') { + finalizeCanceled(batcher.requestList, e); + } else { + finalizeUncompleted(batcher.requestList); + } + }); }, opts.batchTimeout); return batcher; @@ -223,6 +229,11 @@ async function sendRequests(requestList: RequestWrapper[], next, opts) { return Promise.resolve(); } +// check that server returns responses for all requests +function finalizeCanceled(requestList: RequestWrapper[], error: Error) { + requestList.forEach((request) => request.completeErr(error)); +} + // check that server returns responses for all requests function finalizeUncompleted(requestList: RequestWrapper[]) { requestList.forEach((request, index) => { diff --git a/src/middlewares/retry.js b/src/middlewares/retry.js index bb65dfe..6e8725b 100644 --- a/src/middlewares/retry.js +++ b/src/middlewares/retry.js @@ -146,7 +146,7 @@ async function makeRetriableRequest( }); } catch (e) { // no response from server (no internet connection), make new attempt - if (e && !e.res && !(e instanceof RRNLRetryMiddlewareError)) { + if (e && !e.res && !(e instanceof RRNLRetryMiddlewareError) && e.name !== 'AbortError') { return makeRetry(e); }