From ff32363d6e136dd4878b7ce28a424e69a415922b Mon Sep 17 00:00:00 2001 From: Patrick Sullivan 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 a6fd1f69..dfd58cfd 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 = ''