anchor.diff:  After the time duration has elapsed, the CircuitBreaker state changes from `OPEN` to `HALF_OPEN` and allows calls to see if the backend is still unavailable or has become available again. The CircuitBreaker uses another (configurable) Ring Bit Buffer to evaluate the failure rate in the `HALF_OPEN` state. If the failure rate is above the configured threshold, the state changes back to `OPEN`. If the failure rate is below or equal to the threshold, the state changes back to `CLOSED`.
   `CircuitBreaker::recordFailure(exception)` checks if the exception should be recorded as a failure or should be ignored. You can configure a custom `Predicate` which decides whether an exception should be recorded as a failure. The default Predicate records all exceptions as a failure.
   
  -The CircuitBreaker publishes a stream of CircuitBreakerEvents to any Observer/Consumer who subscribes. This library uses RxJava to to provide this functionality. If you want to consume events, you have to subscribe to the event stream. This library provides a consumer `CircuitBreakerEventConsumer` which can be used to store events in a circular buffer with a fixed capacity. You can use RxJava to filter certain events.
  -
  -[source,java]
  -----
  -CircuitBreaker circuitBreaker = CircuitBreaker.ofDefaults("testName");
  -CircuitBreakerEventConsumer ringBuffer = new CircuitBreakerEventConsumer(10);
  -circuitBreaker.getEventStream()
  -        .filter(event -> event.getEventType() == Type.ERROR)
  -        .subscribe(ringBuffer);
  -----
  -
  -== Usage guide
  -
  -See http://robwin.github.io/javaslang-circuitbreaker/0.7.0/[User Guide].
  -
   == Companies who use javaslang-circuitbreaker
   
   * Deutsche Telekom
  
positive.code: Observable.fromCallable(helloWorldService::sayHelloWorld)
      .lift(CircuitBreakerOperator.of(circuitBreaker))
  ----
  
  The CircuitBreaker is implemented via a finite state machine with three states: `CLOSED`, `OPEN` and `HALF_OPEN`.
  
  
negative.code: 
  In Hystrix, executable logic needs to be wrapped inside a HystrixCommand. This library provides higher-order functions to decorate any function, lambda expression or method reference with a http://martinfowler.com/bliki/CircuitBreaker.html[Circuit Breaker]. The library also provides a custom RxJava operator to decorate any `Observable` or `Flowable`.
  In the following I call the higher-order functions decorators. The decorators return an enhanced version of your function. Furthermore, the library provides a decorator to retry failed functions. You can stack more than one decorator on any given function. That means, you can combine a Retry decorator with a CircuitBreaker decorator. Any decorated function can be invoked synchronously or asynchronously.
  
  == Examples
  
  The following example shows how to decorate a method call with a CircuitBreaker and automatically retry the call when an exception occurs.
  
  