In WebTransportBidirectionalEchoVisitor, retry sending FIN if we cannot send it immediately.

This has caused flaky tests in Chromium before, and is blocking a test I've been trying to add.

PiperOrigin-RevId: 494093482
diff --git a/quiche/quic/tools/web_transport_test_visitors.h b/quiche/quic/tools/web_transport_test_visitors.h
index c7630e4..368e53a 100644
--- a/quiche/quic/tools/web_transport_test_visitors.h
+++ b/quiche/quic/tools/web_transport_test_visitors.h
@@ -74,9 +74,11 @@
       buffer_ = "";
     }
 
-    if (send_fin_) {
+    if (send_fin_ && !fin_sent_) {
       bool success = stream_->SendFin();
-      QUICHE_DCHECK(success);
+      if (success) {
+        fin_sent_ = true;
+      }
     }
   }
 
@@ -99,6 +101,7 @@
   WebTransportStream* stream_;
   std::string buffer_;
   bool send_fin_ = false;
+  bool fin_sent_ = false;
   bool stop_sending_received_ = false;
 };