Typed error categories used at QUIC runtime boundaries.
@type kind() :: :parse | :bounds | :unsupported | :crypto | :state | :io | :timeout
@type t() :: %Quic.Error{ __exception__: true, detail: term(), kind: kind(), reason: atom() }