# `Quiver.Error.H3DatagramError`
[🔗](https://github.com/edlontech/quiver/blob/main/lib/quiver/error/h3_datagram_error.ex#L1)

Datagram send failed at the QUIC or HTTP/3 layer.

`reason` is one of:

- `:unknown_stream` -- the bound H/3 stream is no longer tracked
  (typically a benign send-after-close race; class `:transient`)
- `:too_large` -- payload exceeded the peer's advertised
  `max_datagram_size`; caller must shrink (class overridden to
  `:invalid` by the mapper)
- `:too_large_for_path` -- current path MTU forbids this size
  (class `:transient`)
- `:congestion_limited` -- sender's congestion controller is closed
  (class `:transient`)
- Other atom -- forwarded from `:quic_h3`; class `:transient`

# `reason`

```elixir
@type reason() ::
  :unknown_stream
  | :too_large
  | :too_large_for_path
  | :congestion_limited
  | atom()
```

# `t`

```elixir
@type t() :: Splode.Error.t()
```

# `exception`

```elixir
@spec exception(opts :: Keyword.t()) :: %Quiver.Error.H3DatagramError{
  __exception__: true,
  bread_crumbs: term(),
  class: term(),
  path: term(),
  reason: term(),
  splode: term(),
  stacktrace: term(),
  vars: term()
}
```

Create an `Elixir.Quiver.Error.H3DatagramError` without raising it.

## Keys

- :reason

---

*Consult [api-reference.md](api-reference.md) for complete listing*
