diff --git a/pkg/jsonrpc/message.go b/pkg/jsonrpc/message.go
index f6b96a398503739dd5a7fe006aaee8307e2f7a83..8428dadab975b33b64de2937351824b4e1e36dbe 100644
--- a/pkg/jsonrpc/message.go
+++ b/pkg/jsonrpc/message.go
@@ -138,6 +138,9 @@ func (m *MessageStream) NewBatch(ctx context.Context) (*BatchWriter, error) {
 	return &BatchWriter{
 		w: m.w,
 		ms: &MessageStream{
+			// we wrap the writer here with a noflush writer so we can reuse the messagestream
+			// when the messagestream creates its subwrites, they won't pass the interface check for Flush
+			// so they wont flush when they close.
 			w: &writer{m.w},
 		},
 		mu: m.mu,
diff --git a/pkg/server/responsewriter.go b/pkg/server/responsewriter.go
index fd8d7c39b0bb99438c742fbae16e01b79025ad9a..6a262d8fd50003d300dfa1f8f599fa1b98a41fe6 100644
--- a/pkg/server/responsewriter.go
+++ b/pkg/server/responsewriter.go
@@ -66,16 +66,12 @@ func (c *streamingRespWriter) Notify(method string, v any) error {
 		return err
 	}
 	defer msg.Close()
-	err = c.cr.notify(&notifyEnv{
+	err = notify(&notifyEnv{
 		method: method,
 		dat:    v,
 	}, msg)
 	if err != nil {
 		return err
 	}
-	err = c.cr.remote.Flush()
-	if err != nil {
-		return err
-	}
 	return nil
 }
diff --git a/pkg/server/rw_batch.go b/pkg/server/rw_batch.go
index 2a327cbbb5405354e56d9d8fbe3ab8686559f5a2..9ca1bb0b99571cbd7d8d7749132d48cfc401c726 100644
--- a/pkg/server/rw_batch.go
+++ b/pkg/server/rw_batch.go
@@ -68,7 +68,7 @@ func (c *batchingRespWriter) Notify(method string, v any) error {
 		return err
 	}
 	defer msg.Close()
-	err = c.cr.notify(&notifyEnv{
+	err = notify(&notifyEnv{
 		method: method,
 		dat:    v,
 	}, msg)
diff --git a/pkg/server/server.go b/pkg/server/server.go
index 0fbbf71c9dbadb88defc9af6f38f150266bfeed8..2dbf4a4754858ef254355d0cdbe0eef4731aa389 100644
--- a/pkg/server/server.go
+++ b/pkg/server/server.go
@@ -319,7 +319,7 @@ type notifyEnv struct {
 	dat    any
 }
 
-func (c *callResponder) notify(env *notifyEnv, s *jsonrpc.MessageWriter) (err error) {
+func notify(env *notifyEnv, s *jsonrpc.MessageWriter) (err error) {
 	err = s.Field("method", []byte(`"`+env.method+`"`))
 	if err != nil {
 		return err