class Concurrent::Promise

def set(value = NULL, &block)

Raises:
  • (Concurrent::PromiseExecutionError) - if not the root promise
def set(value = NULL, &block)
  raise PromiseExecutionError.new('supported only on root promise') unless root?
  check_for_block_or_value!(block_given?, value)
  synchronize do
    if @state != :unscheduled
      raise MultipleAssignmentError
    else
      @promise_body = block || Proc.new { |result| value }
    end
  end
  execute
end