
Implementing the Circuit Breaker Pattern in TypeScript
Implementing the Circuit Breaker Pattern in TypeScript Your payment service is down. Every request to it times out after 30 seconds. 100 requests per second means 3000 threads waiting on a dead service. Your entire system cascades. Three States Closed = normal, requests pass. Open = failing, reject immediately. Half-Open = testing recovery with one probe. Implementation type State = " closed " | " open " | " half-open " ; class CircuitBreaker { private state : State = " closed " ; private failures = 0 ; private lastFailure = 0 ; constructor ( private threshold = 5 , private timeout = 60000 ) {} async call ( fn ) { if ( this . state === " open " ) { if ( Date . now () - this . lastFailure > this . timeout ) this . state = " half-open " ; else throw new Error ( " Circuit is OPEN " ); } try { const result = await fn (); this . reset (); return result ; } catch ( err ) { this . recordFailure (); throw err ; } } private reset () { this . state = " closed " ; this . failures = 0 ; } private
Continue reading on Dev.to Webdev
Opens in a new tab


