class Concurrent::IVar

def complete(success, value, reason)

def complete(success, value, reason)
  mutex.synchronize do
    raise MultipleAssignmentError.new('multiple assignment') if [:fulfilled, :rejected].include? @state
    set_state(success, value, reason)
    event.set
  end
  time = Time.now
  observers.notify_and_delete_observers{ [time, self.value, reason] }
  self
end