From bfcdaf01df5963fa55515d932148163a4d4e5d6e Mon Sep 17 00:00:00 2001 From: jonatasrs Date: Wed, 24 Jul 2019 10:07:47 -0300 Subject: [PATCH 1/2] Abortable per fetch and return after event handler. --- src/index.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/index.js b/src/index.js index 9ef114f..2ce0a02 100644 --- a/src/index.js +++ b/src/index.js @@ -70,9 +70,9 @@ class FetchInterceptor { * Hijack global fetch and insert registered hooks if present */ hijack() { - const controller = new AbortController(); - const signal = controller.signal; this.env.fetch = (...a) => { + const controller = new AbortController(); + const signal = controller.signal; let request; if (a[0] instanceof Request) { let object = {}; @@ -120,11 +120,13 @@ class FetchInterceptor { return promise.then((response) => { if (response.ok) { if (typeof this.onRequestSuccess === 'function') { - this.onRequestSuccess(response, request, controller); + return this.onRequestSuccess(response, request, controller) + .then(() => response); } } else { if (typeof this.onRequestFailure === 'function') { - this.onRequestFailure(response, request, controller); + return this.onRequestFailure(response, request, controller) + .then(() => response); } } return response; From c6576f3858b07ae710c84f0d4bfd856639e2cab2 Mon Sep 17 00:00:00 2001 From: jonatasrs Date: Wed, 24 Jul 2019 10:37:06 -0300 Subject: [PATCH 2/2] fix return --- src/index.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/index.js b/src/index.js index 2ce0a02..dd995d6 100644 --- a/src/index.js +++ b/src/index.js @@ -120,13 +120,15 @@ class FetchInterceptor { return promise.then((response) => { if (response.ok) { if (typeof this.onRequestSuccess === 'function') { - return this.onRequestSuccess(response, request, controller) - .then(() => response); + return Promise.resolve( + this.onRequestSuccess(response, request, controller) + ).then(() => response); } } else { if (typeof this.onRequestFailure === 'function') { - return this.onRequestFailure(response, request, controller) - .then(() => response); + return Promise.resolve( + this.onRequestFailure(response, request, controller) + ).then(() => response); } } return response;