# `QuicHttp3.Session`
[🔗](https://github.com/gsmlg-dev/http_fetch/blob/v0.16.7/apps/elixir_quic_http3/lib/quic_http3/session.ex#L1)

Caller-driven HTTP/3 session with resumable QUIC admission.

Mutating failures return the advanced session. Call `resume/1` to reconcile an
unknown operation, or retry a definitely blocked operation after credit changes.
Unknown operations are never replayed, including after result-cache eviction.
Native query calls and DNS retain their transport timeout bounds; the session
deadline is an admission/reconciliation budget, not a shorter wall-clock bound.

# `failure`

```elixir
@type failure() ::
  {:error, t(), term()} | {:blocked, t(), term()} | {:unknown, t(), reference()}
```

# `t`

```elixir
@type t() :: %QuicHttp3.Session{
  aborted_operation: term(),
  connection: term(),
  continuations: term(),
  control: term(),
  control_stream: term(),
  max_encoded_headers: term(),
  max_fields: term(),
  max_frame: term(),
  max_header_bytes: term(),
  max_retained_bytes: term(),
  next_request: term(),
  next_stream_id: term(),
  open?: term(),
  peer_streams: term(),
  pending: term(),
  qpack_streams: term(),
  requests: term(),
  retired: term(),
  runnable: term(),
  timeout: term(),
  transport: term(),
  work: term()
}
```

# `abort`

Terminate transport resources without replaying pending application work.

This does not prove an indeterminate request was unsent. The returned session
retains its abandoned operation identity in `aborted_operation`.

# `cancel`

# `close`

# `connect`

# `new`

# `open`

# `poll`

# `ready`

# `request`

# `reset_send`

# `resume`

# `resume`

# `send_data`

# `suspend_blocked`

---

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