diff --git a/src/aiowebhooks/sender.py b/src/aiowebhooks/sender.py index f9e2706..3fbc7a6 100644 --- a/src/aiowebhooks/sender.py +++ b/src/aiowebhooks/sender.py @@ -214,7 +214,10 @@ class Webhook: if status == 429: # every 429 is retryable; honor an explicit retry_after by # sleeping it, but a 429 with no parseable wait (edge/Cloudflare/ - # generic webhook) still retries under aretry's backoff + cap + # generic webhook) still retries under aretry's backoff + cap. + # note: aretry ALSO sleeps its backoff between retries, so an + # honored retry_after is additive (retry_after + backoff) — this + # only ever over-waits, never under-waits the server's hint wait = self._retry_after(status, resp.headers, body) if wait is not None: log.warning("webhook 429 on %s; honoring retry_after %.3fs", url, wait)