class Concurrent::Promises::FlatFuturePromise

def process_on_blocker_resolution(future, index)

def process_on_blocker_resolution(future, index)
  countdown = super(future, index)
  if countdown.nonzero?
    internal_state = future.internal_state
    unless internal_state.fulfilled?
      resolve_with internal_state
      return countdown
    end
    value = internal_state.value
    case value
    when AbstractEventFuture
      add_delayed_of value
      value.add_callback_notify_blocked self, nil
      countdown
    else
      evaluate_to(lambda { raise TypeError, "returned value #{value.inspect} is not a Future" })
    end
  end
  countdown
end