http2: remove race from TestTransportCancelDataResponseRace

Wait for the client request to return before cancelling the request.
Then cancel the request and send more data.

Fixes: golang/go#45701

Change-Id: Icc81f9c6fefdda1d978e6234c9894f552daecd45
Reviewed-on: https://go-review.googlesource.com/c/net/+/320369
Run-TryBot: Bryan Mills <bcmills@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Auto-Submit: Damien Neil <dneil@google.com>
Reviewed-by: Bryan Mills <bcmills@google.com>
Reviewed-by: Damien Neil <dneil@google.com>
diff --git a/http2/transport_test.go b/http2/transport_test.go
index 7d69c7d..ff20c3b 100644
--- a/http2/transport_test.go
+++ b/http2/transport_test.go
@@ -3412,7 +3412,7 @@
 // connection.
 func TestTransportCancelDataResponseRace(t *testing.T) {
 	cancel := make(chan struct{})
-	clientGotError := make(chan bool, 1)
+	clientGotResponse := make(chan bool, 1)
 
 	const msg = "Hello."
 	st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) {
@@ -3425,8 +3425,8 @@
 			io.WriteString(w, "Some data.")
 			w.(http.Flusher).Flush()
 			if i == 2 {
+				<-clientGotResponse
 				close(cancel)
-				<-clientGotError
 			}
 			time.Sleep(10 * time.Millisecond)
 		}
@@ -3440,13 +3440,13 @@
 	req, _ := http.NewRequest("GET", st.ts.URL, nil)
 	req.Cancel = cancel
 	res, err := c.Do(req)
+	clientGotResponse <- true
 	if err != nil {
 		t.Fatal(err)
 	}
 	if _, err = io.Copy(ioutil.Discard, res.Body); err == nil {
 		t.Fatal("unexpected success")
 	}
-	clientGotError <- true
 
 	res, err = c.Get(st.ts.URL + "/hello")
 	if err != nil {