# `Foundation.Retry.Policy`
[🔗](https://github.com/nshkrdotcom/foundation/blob/v0.2.1/lib/foundation/retry.ex#L8)

Retry policy configuration.

# `retry_after_fun`
[🔗](https://github.com/nshkrdotcom/foundation/blob/v0.2.1/lib/foundation/retry.ex#L14)

```elixir
@type retry_after_fun() :: (term() -&gt; non_neg_integer() | nil)
```

# `retry_on_fun`
[🔗](https://github.com/nshkrdotcom/foundation/blob/v0.2.1/lib/foundation/retry.ex#L13)

```elixir
@type retry_on_fun() :: (term() -&gt; boolean())
```

# `t`
[🔗](https://github.com/nshkrdotcom/foundation/blob/v0.2.1/lib/foundation/retry.ex#L16)

```elixir
@type t() :: %Foundation.Retry.Policy{
  backoff: Foundation.Backoff.Policy.t(),
  max_attempts: non_neg_integer() | :infinity,
  max_elapsed_ms: non_neg_integer() | nil,
  progress_timeout_ms: non_neg_integer() | nil,
  retry_after_ms_fun: retry_after_fun() | nil,
  retry_on: retry_on_fun()
}
```

# `new`
[🔗](https://github.com/nshkrdotcom/foundation/blob/v0.2.1/lib/foundation/retry.ex#L33)

```elixir
@spec new(keyword()) :: t()
```

---

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