class Concurrent::Promises::ZipFutureEventPromise

def initialize(delayed, blockers_count, default_executor)

def initialize(delayed, blockers_count, default_executor)
  super delayed, 2, Future.new(self, default_executor)
  @result = nil
end

def on_resolvable(resolved_future, index)

def on_resolvable(resolved_future, index)
  resolve_with @result
end

def process_on_blocker_resolution(future, index)

def process_on_blocker_resolution(future, index)
  # first blocking is future, take its result
  @result = future.internal_state if index == 0
  # super has to be called after above to piggyback on volatile @Countdown
  super future, index
end