README.md

# Again

A library for retrying work again... and again... and again...

## Usage

```elixir
# Create a retry policy
alias Again.{Backoff, Clock, SystemClock, Termination}

policy =
  %Again.Policy{
    clock: SystemClock,
    backoff: Backoff.exponential_backoff(100),
    termination: Termination.limit_attempts(5)
  }

# Use it
Again.retry(policy, fn ->
  do_something_that_might_fail()
end)
```

## TODO
A couple of things before this library is ready for primetime:
- Better classification for error + success results
- Observability into execution state / `Logger` integration