Outbound Channel Retry
Goals
- Retry per outbound HTTP request, not per multi-step flow.
- Preserve ordering by retrying only the current step.
- Avoid duplicating non-idempotent operations.
Defaults
- Attempts: 3
- Max delay cap: 30000 ms
- Jitter: 0.1 (10 percent)
- Channel defaults:
- Telegram min delay: 400 ms
- Discord min delay: 500 ms
Behavior
Discord
- Retries only Carbon
RateLimitErrorresponses. - Uses Discord
retry_afterwhen available, otherwise exponential backoff. - Does not retry ordinary network or permission errors.
Telegram
- Retries on transient errors: 429, timeout, connect/reset/closed, unavailable, or temporarily unavailable.
- Uses
retry_afterwhen available, otherwise exponential backoff. - HTML/Markdown parse errors are not retried through the retry runner; Telegram send falls back to plain text where the send path supports it.
Configuration
Set retry policy per channel in~/.fased/fased.json:
Notes
- Retries apply per request, such as message send, media upload, reaction, poll, sticker, or thread creation where the channel sender wraps the call.
- Composite flows do not retry completed steps.