- From: Domenic Denicola <notifications@github.com>
 - Date: Fri, 31 Mar 2017 03:34:58 -0700
 - To: whatwg/streams <streams@noreply.github.com>
 - Cc: Subscribed <subscribed@noreply.github.com>
 - Message-ID: <whatwg/streams/pull/721/review/30212700@github.com>
 
domenic commented on this pull request.
Looking pretty great... will review tests next...
>  
   assert(state === 'writable', 'state must be writable');
 
   const error = new TypeError('Requested to abort');
-  if (stream._pendingAbortRequest !== undefined) {
+  if (stream._pendingAbortRequest === true) {
Is it a boolean or a promise?
> @@ -405,7 +383,7 @@ class WritableStreamDefaultWriter {
     const state = stream._state;
 
     if (state === 'writable') {
-      if (stream._pendingAbortRequest !== undefined) {
+      if (stream._pendingError === true) {
         const error = new TypeError('Requested to abort');
Error message needs tweaking. Or should we use _storedError? I think that would be consistent with e.g. write().
> @@ -567,7 +542,7 @@ function WritableStreamDefaultWriterClose(writer) {
     stream._closeRequest = closeRequest;
   });
 
-  if (stream._backpressure === true) {
+  if (stream._backpressure === true && !stream._pendingError) {
Nit: === false to match spec text
>  
   WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, releasedError);
 
-  if (state === 'writable' || WritableStreamHasOperationMarkedInFlight(stream) === true) {
-    defaultWriterClosedPromiseReject(writer, releasedError);
-  } else {
-    defaultWriterClosedPromiseResetToRejected(writer, releasedError);
-  }
-  writer._closedPromise.catch(() => {});
+  // The state transitions to "errored" before the sink abort() method runs, but the writer.closed promise is not
+  // rejected until afterwards. This means that simply testing state will not work
Nit: period at end of sentence.
> @@ -711,8 +691,12 @@ class WritableStreamDefaultController {
       throw new TypeError(
         'WritableStreamDefaultController.prototype.error can only be used on a WritableStreamDefaultController');
     }
+    const stream = this._controlledWritableStream;
+    if (stream._pendingError) {
Nit: === true
> @@ -737,19 +720,13 @@ class WritableStreamDefaultController {
       () => {
         this._started = true;
 
-        if (stream._state === 'errored') {
-          WritableStreamRejectAbortRequestIfPending(stream);
-        } else {
-          WritableStreamHandleAbortRequestIfPending(stream);
-        }
-
         // This is a no-op if the stream was errored above.
Is this comment still accurate?
>          // This is a no-op if the stream was errored above.
         WritableStreamDefaultControllerAdvanceQueueIfNeeded(this);
       },
       r => {
-        assert(stream._state === 'writable' || stream._state === 'errored');
-        WritableStreamDefaultControllerErrorIfNeeded(this, r);
-        WritableStreamRejectAbortRequestIfPending(stream);
+        assert(stream._state === 'writable');
Maybe this assert should be in both branches now?
-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/whatwg/streams/pull/721#pullrequestreview-30212700
Received on Friday, 31 March 2017 10:35:45 UTC