From 2dc66c3f143f34f669248262380fd7c38eba107e Mon Sep 17 00:00:00 2001
From: Anmol Sethi <hi@nhooyr.io>
Date: Mon, 13 Apr 2020 22:34:47 -0400
Subject: [PATCH] Check whether the connection is closed before returning a
 write IO error

Closes #215
---
 write.go | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/write.go b/write.go
index 2d439de..60a4fba 100644
--- a/write.go
+++ b/write.go
@@ -262,8 +262,14 @@ func (c *Conn) writeFrame(ctx context.Context, fin bool, flate bool, opcode opco
 
 	defer func() {
 		if err != nil {
-			err = fmt.Errorf("failed to write frame: %w", err)
+			select {
+			case <-c.closed:
+				err = c.closeErr
+			case <-ctx.Done():
+				err = ctx.Err()
+			}
 			c.close(err)
+			err = fmt.Errorf("failed to write frame: %w", err)
 		}
 	}()
 
-- 
GitLab