diff --git a/websocket.go b/websocket.go
index d59812b82dce937a46dec912f241035ac8b1c3f0..b5ca93a162a2f9ca36997786fe291d6508c41ea3 100644
--- a/websocket.go
+++ b/websocket.go
@@ -846,8 +846,9 @@ func (c *Conn) ping(ctx context.Context) error {
 	case <-c.closed:
 		return c.closeErr
 	case <-ctx.Done():
-		c.close(xerrors.Errorf("failed to ping: %w", ctx.Err()))
-		return ctx.Err()
+		err := xerrors.Errorf("failed to wait for pong: %w", ctx.Err())
+		c.close(err)
+		return err
 	case <-pong:
 		return nil
 	}
diff --git a/websocket_test.go b/websocket_test.go
index b1c5b9d485d74243c89cd31c1bcf1138ff48325e..922feeb348109c7c98ab1a22dfee6fb587017ba9 100644
--- a/websocket_test.go
+++ b/websocket_test.go
@@ -263,7 +263,6 @@ func TestHandshake(t *testing.T) {
 				if err != nil {
 					return err
 				}
-				// Read twice to ensure the un EOFed previous reader works correctly.
 				err = read()
 				if err != nil {
 					return err
@@ -843,11 +842,6 @@ func benchConn(b *testing.B, echo, stream bool, size int) {
 			if err != nil {
 				b.Fatal(err)
 			}
-
-			_, err = r.Read([]byte{0})
-			if !xerrors.Is(err, io.EOF) {
-				b.Fatalf("more data in reader than needed")
-			}
 		}
 	}
 	b.StopTimer()