Retries the downstream pipeline when the call fails.
Wraps the inner plugs (NodeSelector → Executor → ErrorHandler) and
re-executes them when ctx.error is set and retries remain. Before each
retry, error, node, and result are cleared so the inner plugs run
fresh (including a new node selection).
Halted contexts are never retried — a plug that halts has explicitly ended the pipeline (e.g. a cache hit or circuit breaker).