diff --git a/contrib/codecs/websocket/codec.go b/contrib/codecs/websocket/codec.go
index 29e4744633b027c909ea230b55a7c39dad8ec451..4a39c6fd2b5f74537db97dfb9f1ff8cf23de2911 100644
--- a/contrib/codecs/websocket/codec.go
+++ b/contrib/codecs/websocket/codec.go
@@ -123,7 +123,11 @@ func (c *Codec) Flush() error {
 		if err != nil {
 			return err
 		}
-		return wr.Close()
+		err = wr.Close()
+		if err != nil {
+			return err
+		}
+		return nil
 	}
 	err := c.currentFrame.Close()
 	if err != nil {
diff --git a/pkg/jsonrpc/message.go b/pkg/jsonrpc/message.go
index 333b64acd7ebd3ed56937d34d708e64ef859037f..6fb1559d5bb23840c00e2fd00b3089ec3ffba20a 100644
--- a/pkg/jsonrpc/message.go
+++ b/pkg/jsonrpc/message.go
@@ -3,7 +3,6 @@ package jsonrpc
 import (
 	"encoding/json"
 	"io"
-	"log"
 
 	"golang.org/x/net/context"
 	"golang.org/x/sync/semaphore"
@@ -18,7 +17,6 @@ type flusher interface {
 
 func flushIfFlusher(w io.Writer) error {
 	if val, ok := w.(flusher); ok {
-		log.Println("flushing response from notification")
 		return val.Flush()
 	}
 	return nil
diff --git a/pkg/server/server.go b/pkg/server/server.go
index 6bafda7b4a30373334e1df7b777077983d0b52a7..1d201bff5dbab5326219fd8911ed7c61bf35b66d 100644
--- a/pkg/server/server.go
+++ b/pkg/server/server.go
@@ -128,7 +128,7 @@ func serveSingle(ctx context.Context,
 		}
 	}
 	handler.ServeRPC(rw, req)
-	if rw.sendCalled == false {
+	if rw.sendCalled == false && rw.id != nil {
 		rw.Send(jsonrpc.Null, nil)
 	}
 	return nil