# `Decibel.HandoffError`
[🔗](https://github.com/ausimian/decibel/blob/1.2.1/lib/decibel/handoff_error.ex#L1)

Raised when a handshake handoff cannot be created or accepted.

The `:reason` field is stable:

- `:invalid_target`: the destination is not a live local process.
- `:invalid_ticket`: the value is not a valid handoff ticket.
- `:not_target`: a valid ticket was accepted outside its designated process.
- `:unavailable`: the ticket was already claimed, expired, or discarded when
  its target exited.
- `:timeout`: the ticket process did not respond before the acceptance deadline.

Errors contain no handshake state or key material.

# `reason`

```elixir
@type reason() ::
  :invalid_target | :invalid_ticket | :not_target | :unavailable | :timeout
```

# `t`

```elixir
@type t() :: %Decibel.HandoffError{
  __exception__: true,
  message: String.t(),
  reason: reason()
}
```

---

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