diff --git a/rpc/handler.go b/rpc/handler.go
index <HASH>..<HASH> 100644
--- a/rpc/handler.go
+++ b/rpc/handler.go
@@ -151,8 +151,8 @@ func (h *handler) handleMsg(msg *jsonrpcMessage) {
 // call goroutines to shut down.
 func (h *handler) close(err error, inflightReq *requestOp) {
 	h.cancelAllRequests(err, inflightReq)
-	h.cancelRoot()
 	h.callWG.Wait()
+	h.cancelRoot()
 	h.cancelServerSubscriptions(err)
 }
rpc: cancel root context after all requests are served (#<I>)