From d2f6ea81dc0308110d734a72b05327a6e10fb202 Mon Sep 17 00:00:00 2001 From: Maria Rekowska Date: Thu, 20 Sep 2018 17:54:06 -0700 Subject: [PATCH] Check for _aborted before _fire() (#38) * Check for _aborted before _fire() --- package.json | 2 +- src/SimpleWebRequest.ts | 2 +- test/SimpleWebRequest.spec.ts | 13 +++++++++++++ 3 files changed, 15 insertions(+), 2 deletions(-) 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