Re: [w3c/ServiceWorker] Correcting the use of types and simplifying the response body read. (#1384)

annevk commented on this pull request.



> -        1. If |response| is [=Body/disturbed=] or [=Body/locked=], return [=a promise rejected with=] a `TypeError`.
-        1. Let |clonedResponse| be the result of [=response/clone|cloning=] |response|'s associated [=Response/response=].
-        1. If |response|'s body is non-null, run these substeps:
-            1. Let |dummyStream| be an [=empty=] {{ReadableStream}} object.
-            1. Set |response|'s [=response/body=] to a new [=/body=] whose [=stream=] is |dummyStream|.
-            1. Let |reader| be the result of [=get a reader|getting a reader=] from |dummyStream|.
-            1. [=Read all bytes=] from |dummyStream| with |reader|.
+        1. If |response|'s [=response/body=] is [=Body/disturbed=] or [=Body/locked=], return [=a promise rejected with=] a `TypeError`.
+        1. Let |clonedResponse| be a [=response/clone=] of |response|.
+        1. Let |bodyReadPromise| be [=a promise resolved with=] undefined.
+        1. If |response|'s [=response/body=] is non-null, run these substeps:
+            1. Let |stream| be |response|'s [=response/body=]'s [=body/stream=].
+            1. Let |reader| be the result of [=ReadableStream/get a reader|getting a reader=] for |stream|.
+            1. Set |bodyReadPromise| to the result of [=Read all bytes|reading all bytes=] from |stream| with |reader|.
+
+            Note: This ensures that |response|'s [=response/body=] is [=Body/locked=], and we have a full buffered copy of the body in |clonedResponse|. An implementation could optimise by streaming directly to disk rather than memory.

optimize*

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/w3c/ServiceWorker/pull/1384#pullrequestreview-195065238

Received on Tuesday, 22 January 2019 15:25:32 UTC