class Reacto::Operations::RetryWhen
Public Class Methods
new(behaviour, predicate)
click to toggle source
# File lib/reacto/operations/retry_when.rb, line 6 def initialize(behaviour, predicate) @behaviour = behaviour @predicate = predicate @retries = {} end
Public Instance Methods
call(tracker)
click to toggle source
# File lib/reacto/operations/retry_when.rb, line 12 def call(tracker) @retries[tracker] ||= 0 error = -> (e) do should_retry = @predicate.call(e, @retries[tracker]) if should_retry @retries[tracker] += 1 @behaviour.call(self.call(tracker)) else tracker.on_error(e) end end Subscriptions::OperationSubscription.new(tracker, error: error) end