From ed9594f773776588e9110e6c3db02bc590f519c7 Mon Sep 17 00:00:00 2001 From: Chris Robertson Date: Wed, 27 May 2020 03:46:53 -0700 Subject: [PATCH] Compatibility for fetch-mock using proxy-pollyfill (#736) * 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. * Update fetch.js Co-authored-by: Jake Champion --- fetch.js | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/fetch.js b/fetch.js index a6fd1f6..dfd58cf 100644 --- a/fetch.js +++ b/fetch.js @@ -209,6 +209,17 @@ function Body() { this.bodyUsed = false this._initBody = function(body) { + /* + 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 = ''