diff --git a/runtime/internal/rpc/client.go b/runtime/internal/rpc/client.go
index 1ce9bca..2c9220b 100644
--- a/runtime/internal/rpc/client.go
+++ b/runtime/internal/rpc/client.go
@@ -449,23 +449,23 @@
 			status.serverErr = suberr(err)
 			return
 		}
-		if write := c.typeCache.writer(flw.Conn()); write != nil {
-			// Create the type flow with a root-cancellable context.
-			// This flow must outlive the flow we're currently creating.
-			// It lives as long as the connection to which it is bound.
-			tctx, tcancel := context.WithRootCancel(ctx)
-			tflow, err := c.flowMgr.DialSideChannel(tctx, flw.RemoteEndpoint(), typeFlowAuthorizer{}, 0)
-			if err != nil {
-				write(nil, tcancel)
-			} else if tflow.Conn() != flw.Conn() {
-				tflow.Close()
-				write(nil, tcancel)
-			} else if _, err = tflow.Write([]byte{typeFlow}); err != nil {
-				tflow.Close()
-				write(nil, tcancel)
-			} else {
-				write(tflow, tcancel)
-			}
+	}
+	if write := c.typeCache.writer(flw.Conn()); write != nil {
+		// Create the type flow with a root-cancellable context.
+		// This flow must outlive the flow we're currently creating.
+		// It lives as long as the connection to which it is bound.
+		tctx, tcancel := context.WithRootCancel(ctx)
+		tflow, err := c.flowMgr.DialSideChannel(tctx, flw.RemoteEndpoint(), typeFlowAuthorizer{}, 0)
+		if err != nil {
+			write(nil, tcancel)
+		} else if tflow.Conn() != flw.Conn() {
+			tflow.Close()
+			write(nil, tcancel)
+		} else if _, err = tflow.Write([]byte{typeFlow}); err != nil {
+			tflow.Close()
+			write(nil, tcancel)
+		} else {
+			write(tflow, tcancel)
 		}
 	}
 
