From 6f84db97d107a0f97fcb6bb09b209d3bf24b8a57 Mon Sep 17 00:00:00 2001 From: Jake Champion Date: Fri, 31 Jul 2020 01:39:21 +0100 Subject: [PATCH 1/2] Make Response.arrayBuffer() always resolve with a `ArrayBuffer` Fixes https://github.com/github/fetch/issues/801 --- fetch.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/fetch.js b/fetch.js index b763a53a..8094dfb9 100644 --- a/fetch.js +++ b/fetch.js @@ -274,7 +274,15 @@ function Body() { this.arrayBuffer = function() { if (this._bodyArrayBuffer) { - return consumed(this) || Promise.resolve(this._bodyArrayBuffer) + consumed(this) + if (ArrayBuffer.isView(this._bodyArrayBuffer)) { + return Promise.resolve(this._bodyArrayBuffer.buffer.slice( + this._bodyArrayBuffer.byteOffset, + this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength + )) + } else { + return Promise.resolve(this._bodyArrayBuffer) + } } else { return this.blob().then(readBlobAsArrayBuffer) } From 70f593c63860f62b4ab176c7ac8cde36b5f7029f Mon Sep 17 00:00:00 2001 From: Jake Champion Date: Fri, 31 Jul 2020 01:41:53 +0100 Subject: [PATCH 2/2] Update fetch.js --- fetch.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/fetch.js b/fetch.js index 8094dfb9..b58aeea4 100644 --- a/fetch.js +++ b/fetch.js @@ -276,10 +276,12 @@ function Body() { if (this._bodyArrayBuffer) { consumed(this) if (ArrayBuffer.isView(this._bodyArrayBuffer)) { - return Promise.resolve(this._bodyArrayBuffer.buffer.slice( - this._bodyArrayBuffer.byteOffset, - this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength - )) + return Promise.resolve( + this._bodyArrayBuffer.buffer.slice( + this._bodyArrayBuffer.byteOffset, + this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength + ) + ) } else { return Promise.resolve(this._bodyArrayBuffer) }