execute<T> method

RxResult<T> execute<T>(
  1. RxResult<T> operation()
)

Execute operation with circuit breaker protection

Implementation

RxResult<T> execute<T>(RxResult<T> Function() operation) {
  if (_isOpen && _shouldAttemptReset()) {
    _reset();
  }

  if (_isOpen) {
    return RxResult.failure(RxException.withTimestamp(
      'Circuit breaker is open',
    ));
  }

  final result = operation();
  if (result.isFailure) {
    _recordFailure();
  } else {
    _recordSuccess();
  }

  return result;
}