diff --git a/runtime/internal/rpc/test/client_test.go b/runtime/internal/rpc/test/client_test.go
index 2559627..5ec4879 100644
--- a/runtime/internal/rpc/test/client_test.go
+++ b/runtime/internal/rpc/test/client_test.go
@@ -258,7 +258,9 @@
 	defer cleanup()
 
 	client := v23.GetClient(ctx)
-	ctx, _ = context.WithTimeout(ctx, 100*time.Millisecond)
+	var cancel context.CancelFunc
+	ctx, cancel = context.WithTimeout(ctx, 100*time.Millisecond)
+	defer cancel()
 	name := naming.JoinAddressName(naming.FormatEndpoint("tcp", "203.0.113.10:443"), "")
 	_, err := client.StartCall(ctx, name, "echo", []interface{}{"args don't matter"})
 	t.Log(err)
@@ -337,7 +339,8 @@
 
 	// The following two tests will fail due to a timeout.
 	ns.SetRoots("/203.0.113.10:8101")
-	nctx, _ = context.WithTimeout(ctx, 100*time.Millisecond)
+	var cancel context.CancelFunc
+	nctx, cancel = context.WithTimeout(ctx, 100*time.Millisecond)
 	// This call will timeout talking to the mount table.
 	call, err := client.StartCall(nctx, "name", "noname", nil, options.NoRetry{})
 	if verror.ErrorID(err) != verror.ErrTimeout.ID {
@@ -346,11 +349,12 @@
 	if call != nil {
 		t.Errorf("expected call to be nil")
 	}
+	cancel()
 
 	// This, second test, will fail due a timeout contacting the server itself.
 	addr = naming.FormatEndpoint("tcp", "203.0.113.10:8101")
 
-	nctx, _ = context.WithTimeout(ctx, 100*time.Millisecond)
+	nctx, cancel = context.WithTimeout(ctx, 100*time.Millisecond)
 	new_name := naming.JoinAddressName(addr, "")
 	call, err = client.StartCall(nctx, new_name, "noname", nil, options.NoRetry{})
 	if verror.ErrorID(err) != verror.ErrTimeout.ID {
@@ -359,6 +363,7 @@
 	if call != nil {
 		t.Errorf("expected call to be nil")
 	}
+	cancel()
 }
 
 type closeConn struct {
@@ -581,7 +586,9 @@
 	defer cleanup()
 
 	want := 10
-	ctx, _ = context.WithTimeout(ctx, 300*time.Millisecond)
+	var cancel context.CancelFunc
+	ctx, cancel = context.WithTimeout(ctx, 300*time.Millisecond)
+	defer cancel()
 	call, err := v23.GetClient(ctx).StartCall(ctx, name, "Source", []interface{}{want})
 	if err != nil {
 		if verror.ErrorID(err) != verror.ErrTimeout.ID {
@@ -670,7 +677,9 @@
 	name := "a_mount_table_entry"
 
 	// If there is no mount table, then we'll get a NoServers error message.
-	ctx, _ = context.WithTimeout(ctx, 300*time.Millisecond)
+	var cancel context.CancelFunc
+	ctx, cancel = context.WithTimeout(ctx, 300*time.Millisecond)
+	defer cancel()
 	_, err := v23.GetClient(ctx).StartCall(ctx, name, "Sleep", nil)
 	if got, want := verror.ErrorID(err), verror.ErrNoServers.ID; got != want {
 		t.Fatalf("got %v, want %v", got, want)
@@ -693,7 +702,9 @@
 	serverName = ep.Name()
 
 	makeCall := func(ctx *context.T, opts ...rpc.CallOpt) (string, error) {
-		ctx, _ = context.WithDeadline(ctx, time.Now().Add(10*time.Second))
+		var cancel context.CancelFunc
+		ctx, cancel = context.WithDeadline(ctx, time.Now().Add(10*time.Second))
+		defer cancel()
 		call, err := v23.GetClient(ctx).StartCall(ctx, serverName, "Echo", []interface{}{"bratman"}, opts...)
 		if err != nil {
 			return "", fmt.Errorf("START: %s", err)
diff --git a/runtime/internal/rpc/test/server_test.go b/runtime/internal/rpc/test/server_test.go
index 6a01817..7898ee9 100644
--- a/runtime/internal/rpc/test/server_test.go
+++ b/runtime/internal/rpc/test/server_test.go
@@ -61,7 +61,9 @@
 	}
 	// TODO(mattr): It doesn't necessarily make sense to me that a bad object from
 	// the dispatcher results in a retry.
-	cctx, _ = context.WithTimeout(ctx, time.Second)
+	var cancel context.CancelFunc
+	cctx, cancel = context.WithTimeout(ctx, time.Second)
+	defer cancel()
 	var result string
 	if err := v23.GetClient(cctx).Call(cctx, "servername", "SomeMethod", nil, []interface{}{&result}); err == nil {
 		// TODO(caprita): Check the error type rather than
