┌────┐ ┌───────┐ ┌──────────────┐ ┌────────┐ │User│ │YourApi│ │CircuitBreaker│ │OtherApi│ └──┬─┘ └───┬───┘ └───────┬──────┘ └────┬───┘ │GET /your-api ┌┴┐ │ │ │──────────────> │ │ │ │ │ │ │ │ │ │ │ │ execute ┌┴┐ │ │ │ │ ──────────────────>│ │ │ │ │ │ │ │ │ │ │ ╔════════════════════╧═╧═════════════════════╗ │ │ │ ║Circuit breaker is open after the 2 errors ░║ │ │ │ ╚════════════════════╤═╤═════════════════════╝ │ │ │ │ │ │ ────┐ │ │ │ │ \ / │ Already 2 errors │ │ │ │ │X│ <───┘ │ │ │ │ /┬\ │ │ │ │ Exception │ │ │ │ │ <─ ─ ─ ─ ─ ─ ─ ─ ─ ─│ │ │ └┬┘ │ │ │ Exception │ │ │ │<─ ─ ─ ─ ─ ─ ─ ─ │ │ │ │ │ │ │ . . . . . . 5 seconds later . . . . . . . . . . . . . │GET /your-api ┌┴┐ │ │ │──────────────> │ │ │ │ │ │ │ │ │ │ │ │ execute ┌┴┐ │ │ │ │ ──────────────────>│ │ │ │ │ │ │ │ │ │ │ │ │ │ GET /other-api \┴/ │ │ │ │ │ ─────────────────────────>│X│ │ │ │ │ │ /┬\ │ │ │ │ │ Exception │ │ │ │ │ │ <─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │ │ │ │ │ │ │ │ │ │ │ │ ────┐ │ │ │ │ │ │ │ Add Error (1) │ │ │ │ │ │ <───┘ │ │ │ │ └┬┘ │ │ │ │ Exception │ │ │ │ │ <─ ─ ─ ─ ─ ─ ─ ─ ─ ─│ │ │ └┬┘ │ │ │ Exception │ │ │ │<─ ─ ─ ─ ─ ─ ─ ─ │ │ │ ┌──┴─┐ ┌───┴───┐ ┌───────┴──────┐ ┌────┴───┐ │User│ │YourApi│ │CircuitBreaker│ │OtherApi│ └────┘ └───────┘ └──────────────┘ └────────┘