So the server now sends a TCP ACK to SYN that is never followed up on? That is, the actual server software will wake up from a listen(), go through the motions of setting up a session for nothing for 50% of the time with this hack? Nice waste of other people's resources right there!
Well, presumably, the client with close the TCP connection once QUIC is established, and cache the result of the race for some period of time.
Okay, I had to do some extra digging. And I was a bit off in my original comment: accept returns a socket only when a connection is fully established, that is, after the ACK from the client. Until then, the application is oblivious to the connection attempt. So sending SYNs by themselves is it too hard on the servers.