quic: report initial TLS errors

Pass errors from QUICConn.Start and the initial flight of TLS events
up to the caller.

For golang/go#58547

Change-Id: I3a32986bc19a2dd9bf43cd08e3fdd1fa93251a0c
Reviewed-on: https://go-review.googlesource.com/c/net/+/529737
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Jonathan Amsterdam <jba@google.com>
diff --git a/internal/quic/conn.go b/internal/quic/conn.go
index 5da0ba4..6097912 100644
--- a/internal/quic/conn.go
+++ b/internal/quic/conn.go
@@ -106,7 +106,7 @@
 	c.lifetimeInit()
 
 	// TODO: initial_source_connection_id, retry_source_connection_id
-	c.startTLS(now, initialConnID, transportParameters{
+	if err := c.startTLS(now, initialConnID, transportParameters{
 		initialSrcConnID:               c.connIDState.srcConnID(),
 		ackDelayExponent:               ackDelayExponent,
 		maxUDPPayloadSize:              maxUDPPayloadSize,
@@ -119,7 +119,9 @@
 		initialMaxStreamsBidi:          c.streams.remoteLimit[bidiStream].max,
 		initialMaxStreamsUni:           c.streams.remoteLimit[uniStream].max,
 		activeConnIDLimit:              activeConnIDLimit,
-	})
+	}); err != nil {
+		return nil, err
+	}
 
 	go c.loop(now)
 	return c, nil