Set a default logger with a null handler
Set a default timer
Use a prepopulated deque instead of list for errors
Inlined CircuitBreaker.reset() and open()
Make all CircuitBreaker parameters optional
Allow log to be a string
Calling YAGNI on CircuitBreakerSet
Catch exceptions of error_types subclasses too
Always (re)set the open state if an error occurs while the circuit is not closed
Allow CircuitBreaker to be used as decorator
Inlined CircuitBreaker.test()
Don't return self from CircuitBreaker.__enter__
Changed success() and error() methods to 'private'
Allow logging the traceback of exceptions that open the circuit
Added ThreadSafeCircuitBreaker
Optimization for the common case to avoid acquiring the lock
Changed parameter order