anchor.diff:  assertThat(secondTry.getCause()).isInstanceOf(RequestNotPermitted.class);
   ----
   
  +[[cache]]
   === Cache
   
   The following example shows how to decorate a lambda expression with a Cache abstraction. The cache abstraction puts the result of the lambda expression in a cache instance (JCache) and
  
positive.code: String value = Try.of(() -> cachedFunction.apply("cacheKey")).get();
  ----
  
  == Consume emitted CircuitBreakerEvents
  
  The CircuitBreaker emits a stream of CircuitBreakerEvents to any Observer/Consumer who subscribes. An event can be a state transition, a successful call, a recorded error or an ignored error. All events contains additional information like event creation time and processing duration of the call. If you want to consume events, you have to subscribe to the event stream. You can use the `CircularEventConsumer` to store events in a circular buffer with a fixed capacity. You can use RxJava to filter certain events.
  
negative.code: List<CacheOnMissEvent> bufferedEvents = circularEventConsumer.getBufferedEvents();
  ----
  
  [[retry_events]]
  == Consume emitted RetryEvents
  
  The RetryContext emits a stream of RetryEvents to any Observer/Consumer who subscribes. An event can be a failure which signals that even all retries have failed or success if a retry was successful. You can use the `CircularEventConsumer` to store events in a circular buffer with a fixed capacity.
  