- client resends on timeout - execute every copy that arrives at the server
- client getting a reply = executed at least once
- if no reply = maybe executed, maybe multiple times
works when
- no side-effects
- read-only or idempotent operations
- stuff that isn’t affected if run multiple times