transport/grpc: deflake TestDialTCPUserTimeout

Supersedes CL https://code-review.googlesource.com/c/google-api-go-client/+/44273.

Change-Id: Iebd0762170df534fccfdde024933f9e48a82391f
Reviewed-on: https://code-review.googlesource.com/c/google-api-go-client/+/44990
Reviewed-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Jean de Klerk <deklerk@google.com>
diff --git a/transport/grpc/dial_socketopt_test.go b/transport/grpc/dial_socketopt_test.go
index 6e31383..ba79f6f 100644
--- a/transport/grpc/dial_socketopt_test.go
+++ b/transport/grpc/dial_socketopt_test.go
@@ -35,19 +35,22 @@
 func TestDialTCPUserTimeout(t *testing.T) {
 	l, err := net.Listen("tcp", ":3000")
 	if err != nil {
-		t.Error(err)
-		return
+		t.Fatal(err)
 	}
 	defer l.Close()
 
+	acceptErrCh := make(chan error, 1)
+
 	go func() {
 		conn, err := l.Accept()
 		if err != nil {
-			t.Error(err)
+			acceptErrCh <- err
 			return
 		}
+		defer conn.Close()
+
 		if err := conn.Close(); err != nil {
-			t.Error(err)
+			acceptErrCh <- err
 		}
 	}()
 
@@ -64,6 +67,12 @@
 	if timeout != tcpUserTimeoutMilliseconds {
 		t.Fatalf("expected %v, got %v", tcpUserTimeoutMilliseconds, timeout)
 	}
+
+	select {
+	case err := <-acceptErrCh:
+		t.Fatalf("Accept failed with: %v", err)
+	default:
+	}
 }
 
 func getTCPUserTimeout(conn net.Conn) (int, error) {