Skip to content

Commit

Permalink
feat: handle canceled requests better (#93)
Browse files Browse the repository at this point in the history
  • Loading branch information
joelvh committed Mar 19, 2020
1 parent ab32fe6 commit c0e3145
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 2 deletions.
13 changes: 12 additions & 1 deletion src/middlewares/batch.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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) => {
Expand Down
2 changes: 1 addition & 1 deletion src/middlewares/retry.js
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}

Expand Down

0 comments on commit c0e3145

Please sign in to comment.