diff --git a/rpc/client.go b/rpc/client.go
index 02029dc8f61af4289d6c2fb612a98f2d93350a10..16511747fa0e4c3ba025f6bbde76514ad365e087 100644
--- a/rpc/client.go
+++ b/rpc/client.go
@@ -137,9 +137,11 @@ func (op *requestOp) wait(ctx context.Context, c *Client) (*jsonrpcMessage, erro
 	select {
 	case <-ctx.Done():
 		// Send the timeout to dispatch so it can remove the request IDs.
-		select {
-		case c.reqTimeout <- op:
-		case <-c.closing:
+		if !c.isHTTP {
+			select {
+			case c.reqTimeout <- op:
+			case <-c.closing:
+			}
 		}
 		return nil, ctx.Err()
 	case resp := <-op.resp: