From c2600f9ebac5441dd5a691c1aca1e1e9560f7214 Mon Sep 17 00:00:00 2001 From: Patrick Sullivan Date: Wed, 6 Nov 2019 10:49:08 -0800 Subject: [PATCH 1/2] Compatibility for fetch-mock using proxy-pollyfill Fixes wheresrhys/fetch-mock#415 Details: fetch-mock wraps the Response object in an ES6 Proxy to provide useful test harness features such as flush. However, on ES5 browsers without fetch or Proxy support pollyfills must be used; the proxy-pollyfill is unable to proxy an attribute unless it exists on the object before the Proxy is created. This change ensures Response.bodyUsed exists on the instance, while maintaining the semantic of setting Request.bodyUsed in the constructor before _initBody is called. --- fetch.js | 1 + 1 file changed, 1 insertion(+) diff --git a/fetch.js b/fetch.js index 018bbb36..a6e8126a 100644 --- a/fetch.js +++ b/fetch.js @@ -209,6 +209,7 @@ function Body() { this.bodyUsed = false this._initBody = function(body) { + this.bodyUsed = this.bodyUsed // copy prototype to instance for proxy-pollyfill this._bodyInit = body if (!body) { this._bodyText = '' From 7ca4dafbe4e233ec0687d7cb4475d0b843afb050 Mon Sep 17 00:00:00 2001 From: Jake Champion Date: Wed, 27 May 2020 10:38:02 +0100 Subject: [PATCH 2/2] Update fetch.js --- fetch.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/fetch.js b/fetch.js index a6e8126a..7f774970 100644 --- a/fetch.js +++ b/fetch.js @@ -209,7 +209,17 @@ function Body() { this.bodyUsed = false this._initBody = function(body) { - this.bodyUsed = this.bodyUsed // copy prototype to instance for proxy-pollyfill + /* + fetch-mock wraps the Response object in an ES6 Proxy to + provide useful test harness features such as flush. However, on + ES5 browsers without fetch or Proxy support pollyfills must be used; + the proxy-pollyfill is unable to proxy an attribute unless it exists + on the object before the Proxy is created. This change ensures + Response.bodyUsed exists on the instance, while maintaining the + semantic of setting Request.bodyUsed in the constructor before + _initBody is called. + */ + this.bodyUsed = this.bodyUsed this._bodyInit = body if (!body) { this._bodyText = ''