diff --git a/rpc/comms/ipc.go b/rpc/comms/ipc.go
index e982ada133c57d62edf4735dede124648915da32..d897bf31375d16b1d50406a64865c754e67fa4cb 100644
--- a/rpc/comms/ipc.go
+++ b/rpc/comms/ipc.go
@@ -44,12 +44,14 @@ func (self *ipcClient) Close() {
 
 func (self *ipcClient) Send(req interface{}) error {
 	var err error
-	if err = self.coder.WriteResponse(req); err != nil {
-		if _, ok := err.(*net.OpError); ok { // connection lost, retry once
+	if r, ok := req.(*shared.Request); ok {
+		if err = self.coder.WriteResponse(r); err != nil {
 			if err = self.reconnect(); err == nil {
-				err = self.coder.WriteResponse(req)
+				err = self.coder.WriteResponse(r)
 			}
 		}
+
+		return err
 	}
 	return err
 }