dd540496a1
Pure addition ahead of the reparenting, so this commit leaves every existing caller and test untouched. SourceNotConfiguredError deliberately stays outside GatewayUnavailableError: a source name that is not in the limiter's config dict is an assembly defect, not a transient outage, and folding it into the retryable family would let a typo retry forever without ever reaching a dead letter queue. The retry_after_s default is 5.0 rather than 0 because a backlog released at zero delay would stampede a backend that is already down.