diff --git a/quic/core/frames/quic_connection_close_frame.cc b/quic/core/frames/quic_connection_close_frame.cc
index 6e5115b..e2555e3 100644
--- a/quic/core/frames/quic_connection_close_frame.cc
+++ b/quic/core/frames/quic_connection_close_frame.cc
@@ -31,16 +31,15 @@
   }
   QuicErrorCodeToIetfMapping mapping =
       QuicErrorCodeToTransportErrorCode(error_code);
-  if (mapping.is_transport_close_) {
+  wire_error_code = mapping.error_code;
+  if (mapping.is_transport_close) {
     // Maps to a transport close
     close_type = IETF_QUIC_TRANSPORT_CONNECTION_CLOSE;
-    wire_error_code = mapping.transport_error_code_;
     transport_close_frame_type = frame_type;
     return;
   }
   // Maps to an application close.
   close_type = IETF_QUIC_APPLICATION_CONNECTION_CLOSE;
-  wire_error_code = mapping.application_error_code_;
   transport_close_frame_type = 0;
 }
 
diff --git a/quic/core/quic_connection_test.cc b/quic/core/quic_connection_test.cc
index e887669..2f161b5 100644
--- a/quic/core/quic_connection_test.cc
+++ b/quic/core/quic_connection_test.cc
@@ -1683,19 +1683,16 @@
     QuicErrorCodeToIetfMapping mapping =
         QuicErrorCodeToTransportErrorCode(expected_code);
 
-    if (mapping.is_transport_close_) {
+    if (mapping.is_transport_close) {
       // This Google QUIC Error Code maps to a transport close,
       EXPECT_EQ(IETF_QUIC_TRANSPORT_CONNECTION_CLOSE,
                 connection_close_frames[0].close_type);
-      EXPECT_EQ(mapping.transport_error_code_,
-                connection_close_frames[0].wire_error_code);
     } else {
       // This maps to an application close.
       EXPECT_EQ(IETF_QUIC_APPLICATION_CONNECTION_CLOSE,
                 connection_close_frames[0].close_type);
-      EXPECT_EQ(mapping.application_error_code_,
-                connection_close_frames[0].wire_error_code);
     }
+    EXPECT_EQ(mapping.error_code, connection_close_frames[0].wire_error_code);
   }
 
   void MtuDiscoveryTestInit() {
diff --git a/quic/core/quic_error_codes.cc b/quic/core/quic_error_codes.cc
index b330725..cea484e 100644
--- a/quic/core/quic_error_codes.cc
+++ b/quic/core/quic_error_codes.cc
@@ -257,333 +257,325 @@
     QuicErrorCode error) {
   switch (error) {
     case QUIC_NO_ERROR:
-      return {true, {static_cast<uint64_t>(NO_IETF_QUIC_ERROR)}};
+      return {true, static_cast<uint64_t>(NO_IETF_QUIC_ERROR)};
     case QUIC_INTERNAL_ERROR:
-      return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}};
+      return {true, static_cast<uint64_t>(INTERNAL_ERROR)};
     case QUIC_STREAM_DATA_AFTER_TERMINATION:
-      return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}};
+      return {true, static_cast<uint64_t>(INTERNAL_ERROR)};
     case QUIC_INVALID_PACKET_HEADER:
-      return {true, {static_cast<uint64_t>(FRAME_ENCODING_ERROR)}};
+      return {true, static_cast<uint64_t>(FRAME_ENCODING_ERROR)};
     case QUIC_INVALID_FRAME_DATA:
-      return {true, {static_cast<uint64_t>(FRAME_ENCODING_ERROR)}};
+      return {true, static_cast<uint64_t>(FRAME_ENCODING_ERROR)};
     case QUIC_MISSING_PAYLOAD:
-      return {true, {static_cast<uint64_t>(FRAME_ENCODING_ERROR)}};
+      return {true, static_cast<uint64_t>(FRAME_ENCODING_ERROR)};
     case QUIC_INVALID_FEC_DATA:
-      return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}};
+      return {true, static_cast<uint64_t>(INTERNAL_ERROR)};
     case QUIC_INVALID_STREAM_DATA:
-      return {true, {static_cast<uint64_t>(FRAME_ENCODING_ERROR)}};
+      return {true, static_cast<uint64_t>(FRAME_ENCODING_ERROR)};
     case QUIC_OVERLAPPING_STREAM_DATA:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_UNENCRYPTED_STREAM_DATA:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_ATTEMPT_TO_SEND_UNENCRYPTED_STREAM_DATA:
-      return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}};
+      return {true, static_cast<uint64_t>(INTERNAL_ERROR)};
     case QUIC_MAYBE_CORRUPTED_MEMORY:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_UNENCRYPTED_FEC_DATA:
-      return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}};
+      return {true, static_cast<uint64_t>(INTERNAL_ERROR)};
     case QUIC_INVALID_RST_STREAM_DATA:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_INVALID_CONNECTION_CLOSE_DATA:
-      return {true, {static_cast<uint64_t>(FRAME_ENCODING_ERROR)}};
+      return {true, static_cast<uint64_t>(FRAME_ENCODING_ERROR)};
     case QUIC_INVALID_GOAWAY_DATA:
-      return {true, {static_cast<uint64_t>(FRAME_ENCODING_ERROR)}};
+      return {true, static_cast<uint64_t>(FRAME_ENCODING_ERROR)};
     case QUIC_INVALID_WINDOW_UPDATE_DATA:
-      return {true, {static_cast<uint64_t>(FRAME_ENCODING_ERROR)}};
+      return {true, static_cast<uint64_t>(FRAME_ENCODING_ERROR)};
     case QUIC_INVALID_BLOCKED_DATA:
-      return {true, {static_cast<uint64_t>(FRAME_ENCODING_ERROR)}};
+      return {true, static_cast<uint64_t>(FRAME_ENCODING_ERROR)};
     case QUIC_INVALID_STOP_WAITING_DATA:
-      return {true, {static_cast<uint64_t>(FRAME_ENCODING_ERROR)}};
+      return {true, static_cast<uint64_t>(FRAME_ENCODING_ERROR)};
     case QUIC_INVALID_PATH_CLOSE_DATA:
-      return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}};
+      return {true, static_cast<uint64_t>(INTERNAL_ERROR)};
     case QUIC_INVALID_ACK_DATA:
-      return {true, {static_cast<uint64_t>(FRAME_ENCODING_ERROR)}};
+      return {true, static_cast<uint64_t>(FRAME_ENCODING_ERROR)};
     case QUIC_INVALID_MESSAGE_DATA:
-      return {true, {static_cast<uint64_t>(FRAME_ENCODING_ERROR)}};
+      return {true, static_cast<uint64_t>(FRAME_ENCODING_ERROR)};
     case QUIC_INVALID_VERSION_NEGOTIATION_PACKET:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_INVALID_PUBLIC_RST_PACKET:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_DECRYPTION_FAILURE:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_ENCRYPTION_FAILURE:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_PACKET_TOO_LARGE:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_PEER_GOING_AWAY:
-      return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}};
+      return {true, static_cast<uint64_t>(INTERNAL_ERROR)};
     case QUIC_INVALID_STREAM_ID:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_INVALID_PRIORITY:
-      return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}};
+      return {true, static_cast<uint64_t>(INTERNAL_ERROR)};
     case QUIC_TOO_MANY_OPEN_STREAMS:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_TOO_MANY_AVAILABLE_STREAMS:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_PUBLIC_RESET:
-      return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}};
+      return {true, static_cast<uint64_t>(INTERNAL_ERROR)};
     case QUIC_INVALID_VERSION:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_INVALID_HEADER_ID:
-      return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}};
+      return {true, static_cast<uint64_t>(INTERNAL_ERROR)};
     case QUIC_INVALID_NEGOTIATED_VALUE:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_DECOMPRESSION_FAILURE:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_NETWORK_IDLE_TIMEOUT:
-      return {true, {static_cast<uint64_t>(NO_IETF_QUIC_ERROR)}};
+      return {true, static_cast<uint64_t>(NO_IETF_QUIC_ERROR)};
     case QUIC_HANDSHAKE_TIMEOUT:
-      return {true, {static_cast<uint64_t>(NO_IETF_QUIC_ERROR)}};
+      return {true, static_cast<uint64_t>(NO_IETF_QUIC_ERROR)};
     case QUIC_ERROR_MIGRATING_ADDRESS:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_ERROR_MIGRATING_PORT:
-      return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}};
+      return {true, static_cast<uint64_t>(INTERNAL_ERROR)};
     case QUIC_PACKET_WRITE_ERROR:
-      return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}};
+      return {true, static_cast<uint64_t>(INTERNAL_ERROR)};
     case QUIC_PACKET_READ_ERROR:
-      return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}};
+      return {true, static_cast<uint64_t>(INTERNAL_ERROR)};
     case QUIC_EMPTY_STREAM_FRAME_NO_FIN:
-      return {true, {static_cast<uint64_t>(FRAME_ENCODING_ERROR)}};
+      return {true, static_cast<uint64_t>(FRAME_ENCODING_ERROR)};
     case QUIC_INVALID_HEADERS_STREAM_DATA:
-      return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}};
+      return {true, static_cast<uint64_t>(INTERNAL_ERROR)};
     case QUIC_HEADERS_STREAM_DATA_DECOMPRESS_FAILURE:
-      return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}};
+      return {true, static_cast<uint64_t>(INTERNAL_ERROR)};
     case QUIC_FLOW_CONTROL_RECEIVED_TOO_MUCH_DATA:
-      return {true, {static_cast<uint64_t>(FLOW_CONTROL_ERROR)}};
+      return {true, static_cast<uint64_t>(FLOW_CONTROL_ERROR)};
     case QUIC_FLOW_CONTROL_SENT_TOO_MUCH_DATA:
-      return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}};
+      return {true, static_cast<uint64_t>(INTERNAL_ERROR)};
     case QUIC_FLOW_CONTROL_INVALID_WINDOW:
-      return {true, {static_cast<uint64_t>(FLOW_CONTROL_ERROR)}};
+      return {true, static_cast<uint64_t>(FLOW_CONTROL_ERROR)};
     case QUIC_CONNECTION_IP_POOLED:
-      return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}};
+      return {true, static_cast<uint64_t>(INTERNAL_ERROR)};
     case QUIC_TOO_MANY_OUTSTANDING_SENT_PACKETS:
-      return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}};
+      return {true, static_cast<uint64_t>(INTERNAL_ERROR)};
     case QUIC_TOO_MANY_OUTSTANDING_RECEIVED_PACKETS:
-      return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}};
+      return {true, static_cast<uint64_t>(INTERNAL_ERROR)};
     case QUIC_CONNECTION_CANCELLED:
-      return {true, {static_cast<uint64_t>(NO_IETF_QUIC_ERROR)}};
+      return {true, static_cast<uint64_t>(NO_IETF_QUIC_ERROR)};
     case QUIC_BAD_PACKET_LOSS_RATE:
-      return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}};
+      return {true, static_cast<uint64_t>(INTERNAL_ERROR)};
     case QUIC_PUBLIC_RESETS_POST_HANDSHAKE:
-      return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}};
+      return {true, static_cast<uint64_t>(INTERNAL_ERROR)};
     case QUIC_FAILED_TO_SERIALIZE_PACKET:
-      return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}};
+      return {true, static_cast<uint64_t>(INTERNAL_ERROR)};
     case QUIC_TOO_MANY_RTOS:
-      return {true, {static_cast<uint64_t>(NO_IETF_QUIC_ERROR)}};
+      return {true, static_cast<uint64_t>(NO_IETF_QUIC_ERROR)};
     case QUIC_HANDSHAKE_FAILED:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_CRYPTO_TAGS_OUT_OF_ORDER:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_CRYPTO_TOO_MANY_ENTRIES:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_CRYPTO_INVALID_VALUE_LENGTH:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_CRYPTO_MESSAGE_AFTER_HANDSHAKE_COMPLETE:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_INVALID_CRYPTO_MESSAGE_TYPE:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_INVALID_CRYPTO_MESSAGE_PARAMETER:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_INVALID_CHANNEL_ID_SIGNATURE:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_CRYPTO_MESSAGE_PARAMETER_NOT_FOUND:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_CRYPTO_MESSAGE_PARAMETER_NO_OVERLAP:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_CRYPTO_MESSAGE_INDEX_NOT_FOUND:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_UNSUPPORTED_PROOF_DEMAND:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_CRYPTO_INTERNAL_ERROR:
-      return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}};
+      return {true, static_cast<uint64_t>(INTERNAL_ERROR)};
     case QUIC_CRYPTO_VERSION_NOT_SUPPORTED:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_CRYPTO_NO_SUPPORT:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_CRYPTO_TOO_MANY_REJECTS:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_PROOF_INVALID:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_CRYPTO_DUPLICATE_TAG:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_CRYPTO_ENCRYPTION_LEVEL_INCORRECT:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_CRYPTO_SERVER_CONFIG_EXPIRED:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_CRYPTO_SYMMETRIC_KEY_SETUP_FAILED:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_CRYPTO_MESSAGE_WHILE_VALIDATING_CLIENT_HELLO:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_CRYPTO_UPDATE_BEFORE_HANDSHAKE_COMPLETE:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_CRYPTO_CHLO_TOO_LARGE:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_VERSION_NEGOTIATION_MISMATCH:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_BAD_MULTIPATH_FLAG:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_MULTIPATH_PATH_DOES_NOT_EXIST:
-      return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}};
+      return {true, static_cast<uint64_t>(INTERNAL_ERROR)};
     case QUIC_MULTIPATH_PATH_NOT_ACTIVE:
-      return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}};
+      return {true, static_cast<uint64_t>(INTERNAL_ERROR)};
     case QUIC_IP_ADDRESS_CHANGED:
-      return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}};
+      return {true, static_cast<uint64_t>(INTERNAL_ERROR)};
     case QUIC_CONNECTION_MIGRATION_NO_MIGRATABLE_STREAMS:
-      return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}};
+      return {true, static_cast<uint64_t>(INTERNAL_ERROR)};
     case QUIC_CONNECTION_MIGRATION_TOO_MANY_CHANGES:
-      return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}};
+      return {true, static_cast<uint64_t>(INTERNAL_ERROR)};
     case QUIC_CONNECTION_MIGRATION_NO_NEW_NETWORK:
-      return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}};
+      return {true, static_cast<uint64_t>(INTERNAL_ERROR)};
     case QUIC_CONNECTION_MIGRATION_NON_MIGRATABLE_STREAM:
-      return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}};
+      return {true, static_cast<uint64_t>(INTERNAL_ERROR)};
     case QUIC_CONNECTION_MIGRATION_DISABLED_BY_CONFIG:
-      return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}};
+      return {true, static_cast<uint64_t>(INTERNAL_ERROR)};
     case QUIC_CONNECTION_MIGRATION_INTERNAL_ERROR:
-      return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}};
+      return {true, static_cast<uint64_t>(INTERNAL_ERROR)};
     case QUIC_CONNECTION_MIGRATION_HANDSHAKE_UNCONFIRMED:
-      return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}};
+      return {true, static_cast<uint64_t>(INTERNAL_ERROR)};
     case QUIC_TOO_MANY_STREAM_DATA_INTERVALS:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_STREAM_SEQUENCER_INVALID_STATE:
-      return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}};
+      return {true, static_cast<uint64_t>(INTERNAL_ERROR)};
     case QUIC_TOO_MANY_SESSIONS_ON_SERVER:
-      return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}};
+      return {true, static_cast<uint64_t>(INTERNAL_ERROR)};
     case QUIC_STREAM_LENGTH_OVERFLOW:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_INVALID_MAX_DATA_FRAME_DATA:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_INVALID_MAX_STREAM_DATA_FRAME_DATA:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_MAX_STREAMS_DATA:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_STREAMS_BLOCKED_DATA:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_INVALID_STREAM_BLOCKED_DATA:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_INVALID_NEW_CONNECTION_ID_DATA:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_INVALID_STOP_SENDING_FRAME_DATA:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_INVALID_PATH_CHALLENGE_DATA:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_INVALID_PATH_RESPONSE_DATA:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case IETF_QUIC_PROTOCOL_VIOLATION:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_INVALID_NEW_TOKEN:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_DATA_RECEIVED_ON_WRITE_UNIDIRECTIONAL_STREAM:
-      return {true, {static_cast<uint64_t>(STREAM_STATE_ERROR)}};
+      return {true, static_cast<uint64_t>(STREAM_STATE_ERROR)};
     case QUIC_TRY_TO_WRITE_DATA_ON_READ_UNIDIRECTIONAL_STREAM:
-      return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}};
+      return {true, static_cast<uint64_t>(INTERNAL_ERROR)};
     case QUIC_INVALID_RETIRE_CONNECTION_ID_DATA:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_STREAMS_BLOCKED_ERROR:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_MAX_STREAMS_ERROR:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_HTTP_DECODER_ERROR:
-      return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}};
+      return {true, static_cast<uint64_t>(INTERNAL_ERROR)};
     case QUIC_STALE_CONNECTION_CANCELLED:
-      return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}};
+      return {true, static_cast<uint64_t>(INTERNAL_ERROR)};
     case QUIC_IETF_GQUIC_ERROR_MISSING:
-      return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}};
+      return {true, static_cast<uint64_t>(INTERNAL_ERROR)};
     case QUIC_WINDOW_UPDATE_RECEIVED_ON_READ_UNIDIRECTIONAL_STREAM:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_TOO_MANY_BUFFERED_CONTROL_FRAMES:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_TRANSPORT_INVALID_CLIENT_INDICATION:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_QPACK_DECOMPRESSION_FAILED:
-      return {false,
-              {static_cast<uint64_t>(
-                  QuicHttpQpackErrorCode::DECOMPRESSION_FAILED)}};
+      return {false, static_cast<uint64_t>(
+                         QuicHttpQpackErrorCode::DECOMPRESSION_FAILED)};
     case QUIC_QPACK_ENCODER_STREAM_ERROR:
-      return {false,
-              {static_cast<uint64_t>(
-                  QuicHttpQpackErrorCode::ENCODER_STREAM_ERROR)}};
+      return {false, static_cast<uint64_t>(
+                         QuicHttpQpackErrorCode::ENCODER_STREAM_ERROR)};
     case QUIC_QPACK_DECODER_STREAM_ERROR:
-      return {false,
-              {static_cast<uint64_t>(
-                  QuicHttpQpackErrorCode::DECODER_STREAM_ERROR)}};
+      return {false, static_cast<uint64_t>(
+                         QuicHttpQpackErrorCode::DECODER_STREAM_ERROR)};
     case QUIC_STREAM_DATA_BEYOND_CLOSE_OFFSET:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_STREAM_MULTIPLE_OFFSET:
-      return {true, {static_cast<uint64_t>(PROTOCOL_VIOLATION)}};
+      return {true, static_cast<uint64_t>(PROTOCOL_VIOLATION)};
     case QUIC_HTTP_FRAME_TOO_LARGE:
-      return {false,
-              {static_cast<uint64_t>(QuicHttp3ErrorCode::EXCESSIVE_LOAD)}};
+      return {false, static_cast<uint64_t>(QuicHttp3ErrorCode::EXCESSIVE_LOAD)};
     case QUIC_HTTP_FRAME_ERROR:
-      return {false, {static_cast<uint64_t>(QuicHttp3ErrorCode::FRAME_ERROR)}};
+      return {false, static_cast<uint64_t>(QuicHttp3ErrorCode::FRAME_ERROR)};
     case QUIC_HTTP_FRAME_UNEXPECTED_ON_SPDY_STREAM:
       return {false,
-              {static_cast<uint64_t>(QuicHttp3ErrorCode::FRAME_UNEXPECTED)}};
+              static_cast<uint64_t>(QuicHttp3ErrorCode::FRAME_UNEXPECTED)};
     case QUIC_HTTP_FRAME_UNEXPECTED_ON_CONTROL_STREAM:
       return {false,
-              {static_cast<uint64_t>(QuicHttp3ErrorCode::FRAME_UNEXPECTED)}};
+              static_cast<uint64_t>(QuicHttp3ErrorCode::FRAME_UNEXPECTED)};
     case QUIC_HTTP_INVALID_FRAME_SEQUENCE_ON_SPDY_STREAM:
       return {false,
-              {static_cast<uint64_t>(QuicHttp3ErrorCode::FRAME_UNEXPECTED)}};
+              static_cast<uint64_t>(QuicHttp3ErrorCode::FRAME_UNEXPECTED)};
     case QUIC_HTTP_INVALID_FRAME_SEQUENCE_ON_CONTROL_STREAM:
       return {false,
-              {static_cast<uint64_t>(QuicHttp3ErrorCode::FRAME_UNEXPECTED)}};
+              static_cast<uint64_t>(QuicHttp3ErrorCode::FRAME_UNEXPECTED)};
     case QUIC_HTTP_DUPLICATE_UNIDIRECTIONAL_STREAM:
-      return {
-          false,
-          {static_cast<uint64_t>(QuicHttp3ErrorCode::STREAM_CREATION_ERROR)}};
+      return {false,
+              static_cast<uint64_t>(QuicHttp3ErrorCode::STREAM_CREATION_ERROR)};
     case QUIC_HTTP_SERVER_INITIATED_BIDIRECTIONAL_STREAM:
-      return {
-          false,
-          {static_cast<uint64_t>(QuicHttp3ErrorCode::STREAM_CREATION_ERROR)}};
+      return {false,
+              static_cast<uint64_t>(QuicHttp3ErrorCode::STREAM_CREATION_ERROR)};
     case QUIC_HTTP_STREAM_WRONG_DIRECTION:
-      return {true, {static_cast<uint64_t>(STREAM_STATE_ERROR)}};
+      return {true, static_cast<uint64_t>(STREAM_STATE_ERROR)};
     case QUIC_HTTP_CLOSED_CRITICAL_STREAM:
-      return {
-          false,
-          {static_cast<uint64_t>(QuicHttp3ErrorCode::CLOSED_CRITICAL_STREAM)}};
+      return {false, static_cast<uint64_t>(
+                         QuicHttp3ErrorCode::CLOSED_CRITICAL_STREAM)};
     case QUIC_HTTP_MISSING_SETTINGS_FRAME:
       return {false,
-              {static_cast<uint64_t>(QuicHttp3ErrorCode::MISSING_SETTINGS)}};
+              static_cast<uint64_t>(QuicHttp3ErrorCode::MISSING_SETTINGS)};
     case QUIC_HTTP_DUPLICATE_SETTING_IDENTIFIER:
-      return {false,
-              {static_cast<uint64_t>(QuicHttp3ErrorCode::SETTINGS_ERROR)}};
+      return {false, static_cast<uint64_t>(QuicHttp3ErrorCode::SETTINGS_ERROR)};
     case QUIC_HPACK_INDEX_VARINT_ERROR:
-      return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}};
+      return {true, static_cast<uint64_t>(INTERNAL_ERROR)};
     case QUIC_HPACK_NAME_LENGTH_VARINT_ERROR:
-      return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}};
+      return {true, static_cast<uint64_t>(INTERNAL_ERROR)};
     case QUIC_HPACK_VALUE_LENGTH_VARINT_ERROR:
-      return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}};
+      return {true, static_cast<uint64_t>(INTERNAL_ERROR)};
     case QUIC_HPACK_NAME_TOO_LONG:
-      return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}};
+      return {true, static_cast<uint64_t>(INTERNAL_ERROR)};
     case QUIC_HPACK_VALUE_TOO_LONG:
-      return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}};
+      return {true, static_cast<uint64_t>(INTERNAL_ERROR)};
     case QUIC_HPACK_NAME_HUFFMAN_ERROR:
-      return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}};
+      return {true, static_cast<uint64_t>(INTERNAL_ERROR)};
     case QUIC_HPACK_VALUE_HUFFMAN_ERROR:
-      return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}};
+      return {true, static_cast<uint64_t>(INTERNAL_ERROR)};
     case QUIC_HPACK_MISSING_DYNAMIC_TABLE_SIZE_UPDATE:
-      return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}};
+      return {true, static_cast<uint64_t>(INTERNAL_ERROR)};
     case QUIC_HPACK_INVALID_INDEX:
-      return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}};
+      return {true, static_cast<uint64_t>(INTERNAL_ERROR)};
     case QUIC_HPACK_INVALID_NAME_INDEX:
-      return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}};
+      return {true, static_cast<uint64_t>(INTERNAL_ERROR)};
     case QUIC_HPACK_DYNAMIC_TABLE_SIZE_UPDATE_NOT_ALLOWED:
-      return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}};
+      return {true, static_cast<uint64_t>(INTERNAL_ERROR)};
     case QUIC_HPACK_INITIAL_TABLE_SIZE_UPDATE_IS_ABOVE_LOW_WATER_MARK:
-      return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}};
+      return {true, static_cast<uint64_t>(INTERNAL_ERROR)};
     case QUIC_HPACK_TABLE_SIZE_UPDATE_IS_ABOVE_ACKNOWLEDGED_SETTING:
-      return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}};
+      return {true, static_cast<uint64_t>(INTERNAL_ERROR)};
     case QUIC_HPACK_TRUNCATED_BLOCK:
-      return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}};
+      return {true, static_cast<uint64_t>(INTERNAL_ERROR)};
     case QUIC_HPACK_FRAGMENT_TOO_LONG:
-      return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}};
+      return {true, static_cast<uint64_t>(INTERNAL_ERROR)};
     case QUIC_HPACK_COMPRESSED_HEADER_SIZE_EXCEEDS_LIMIT:
-      return {true, {static_cast<uint64_t>(INTERNAL_ERROR)}};
+      return {true, static_cast<uint64_t>(INTERNAL_ERROR)};
     case QUIC_LAST_ERROR:
-      return {false, {static_cast<uint64_t>(QUIC_LAST_ERROR)}};
+      return {false, static_cast<uint64_t>(QUIC_LAST_ERROR)};
   }
   // If it's an unknown code, indicate it's an application error code.
-  return {false, {NO_IETF_QUIC_ERROR}};
+  return {true, static_cast<uint64_t>(NO_IETF_QUIC_ERROR)};
 }
 
 #undef RETURN_STRING_LITERAL  // undef for jumbo builds
diff --git a/quic/core/quic_error_codes.h b/quic/core/quic_error_codes.h
index b3de77c..912c81d 100644
--- a/quic/core/quic_error_codes.h
+++ b/quic/core/quic_error_codes.h
@@ -458,16 +458,11 @@
     std::ostream& os,
     const QuicIetfTransportErrorCodes& c);
 
-// Returns the mapping of the QuicErrorCode to an IETF TransportErrorCode. If
-// first element of the pair is false, it means that an IETF Application Close
-// should be done instead.
-
+// A transport error code (if is_transport_close is true) or application error
+// code (if is_transport_close is false) to be used in CONNECTION_CLOSE frames.
 struct QUIC_EXPORT_PRIVATE QuicErrorCodeToIetfMapping {
-  bool is_transport_close_;
-  union {
-    uint64_t application_error_code_;
-    QuicIetfTransportErrorCodes transport_error_code_;
-  };
+  bool is_transport_close;
+  uint64_t error_code;
 };
 
 // Convert QuicErrorCode to transport or application IETF error code
diff --git a/quic/core/quic_error_codes_test.cc b/quic/core/quic_error_codes_test.cc
index de3ebcb..e57a3e5 100644
--- a/quic/core/quic_error_codes_test.cc
+++ b/quic/core/quic_error_codes_test.cc
@@ -76,14 +76,14 @@
     QuicErrorCodeToIetfMapping ietf_error_code =
         QuicErrorCodeToTransportErrorCode(
             static_cast<QuicErrorCode>(internal_error_code));
-    if (ietf_error_code.is_transport_close_) {
+    if (ietf_error_code.is_transport_close) {
       QuicIetfTransportErrorCodes transport_error_code =
-          ietf_error_code.transport_error_code_;
+          static_cast<QuicIetfTransportErrorCodes>(ietf_error_code.error_code);
       bool is_valid_transport_error_code = transport_error_code <= 0x0d;
       EXPECT_TRUE(is_valid_transport_error_code) << internal_error_code_string;
     } else {
       // Non-transport errors are application errors, either HTTP/3 or QPACK.
-      uint64_t application_error_code = ietf_error_code.application_error_code_;
+      uint64_t application_error_code = ietf_error_code.error_code;
       bool is_valid_http3_error_code =
           application_error_code >= 0x100 && application_error_code <= 0x110;
       bool is_valid_qpack_error_code =
