diff --git a/package.json b/package.json index 702435a..2085e3d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "simplerestclients", - "version": "0.2.1", + "version": "0.2.2", "description": "A library of components for accessing RESTful services with javascript/typescript.", "author": "David de Regt ", "scripts": { diff --git a/src/SimpleWebRequest.ts b/src/SimpleWebRequest.ts index 6a9278a..3d9829b 100644 --- a/src/SimpleWebRequest.ts +++ b/src/SimpleWebRequest.ts @@ -223,7 +223,7 @@ export abstract class SimpleWebRequestBase { _.remove(blockedList, req); }).then(() => { - if (executingList.length < SimpleWebRequestOptions.MaxSimultaneousRequests) { + if (executingList.length < SimpleWebRequestOptions.MaxSimultaneousRequests && !req._aborted) { executingList.push(req); req._fire(); } else { diff --git a/test/SimpleWebRequest.spec.ts b/test/SimpleWebRequest.spec.ts index 1b63e22..fb560e0 100644 --- a/test/SimpleWebRequest.spec.ts +++ b/test/SimpleWebRequest.spec.ts @@ -266,6 +266,19 @@ describe('SimpleWebRequest', () => { blockDefer.reject(errorString); }); + + it('does not attempt to fire aborted request, if it was aborted while blocked', () => { + SimpleWebRequestOptions.MaxSimultaneousRequests = 1; + const url = faker.internet.url(); + const method = 'GET'; + const blockDefer = SyncTasks.Defer(); + const requestPromise = new SimpleWebRequest(url, method, { priority: WebRequestPriority.Critical }, undefined, () => blockDefer.promise()).start(); + requestPromise.cancel(); + + blockDefer.resolve(void 0); + expect(jasmine.Ajax.requests.count()).toBe(0); + + }); }); // @TODO Add more unit tests