# `Lightning.Retry`
[🔗](https://github.com/OpenFn/lightning/blob/main/lib/lightning/retry.ex#L1)

Retry helpers with exponential backoff and optional jitter.

# `config`

```elixir
@type config() :: %{
  max_attempts: pos_integer(),
  initial_delay_ms: non_neg_integer(),
  max_delay_ms: non_neg_integer(),
  backoff_factor: float(),
  timeout_ms: non_neg_integer(),
  retry_on: (any() -&gt; boolean()),
  context: map(),
  jitter: boolean()
}
```

# `retry_option`

```elixir
@type retry_option() ::
  {:max_attempts, pos_integer()}
  | {:initial_delay_ms, non_neg_integer()}
  | {:max_delay_ms, non_neg_integer()}
  | {:backoff_factor, number()}
  | {:timeout_ms, non_neg_integer()}
  | {:retry_on, (any() -&gt; boolean())}
  | {:context, map()}
  | {:jitter, boolean()}
```

# `retry_result`

```elixir
@type retry_result() :: {:ok, any()} | {:error, term()}
```

# `retriable_error?`

```elixir
@spec retriable_error?(term()) :: boolean()
```

# `with_retry`

```elixir
@spec with_retry((-&gt; retry_result()), [retry_option()]) :: retry_result()
```

# `with_webhook_retry`

```elixir
@spec with_webhook_retry((-&gt; retry_result()), [retry_option()]) :: retry_result()
```

---

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