class Concurrent::Promises::ChainPromise

def on_resolvable(resolved_future, index)

def on_resolvable(resolved_future, index)
  if Future === resolved_future
    Concurrent.executor(@Executor).post(resolved_future, @Args, @Task) do |future, args, task|
      evaluate_to(*future.result, *args, task)
    end
  else
    Concurrent.executor(@Executor).post(@Args, @Task) do |args, task|
      evaluate_to(*args, task)
    end
  end
end