It's not revolutionary, but it does a lot of things right and has more features that what you mentioned above:
* maintains a semaphore of currently processing requests, and will immediately fail a request if the semaphore is full.
* tracks service latency and other statistics for you
* maintains a circuit breaker to immediately fail requests if the breaker is open (based on statistics)
* watches for health to be restored of the 3rd party service and allows requests to it again.
* built in request isolation via threadpools
* built in request collapsing and caching
Overall I like this cause it's a great demonstration of how to think about, and engineer for, failure in a distributed system.
* maintains a semaphore of currently processing requests, and will immediately fail a request if the semaphore is full.
* tracks service latency and other statistics for you
* maintains a circuit breaker to immediately fail requests if the breaker is open (based on statistics)
* watches for health to be restored of the 3rd party service and allows requests to it again.
* built in request isolation via threadpools
* built in request collapsing and caching
Overall I like this cause it's a great demonstration of how to think about, and engineer for, failure in a distributed system.