class Turbo::Debouncer

def debounce(&block)

def debounce(&block)
  scheduled_task&.cancel unless scheduled_task&.complete?
  @scheduled_task = Concurrent::ScheduledTask.execute(delay, &block)
end

def initialize(delay: DEFAULT_DELAY)

def initialize(delay: DEFAULT_DELAY)
  @delay = delay
  @scheduled_task = nil
end

def wait

def wait
  scheduled_task&.wait(wait_timeout)
end

def wait_timeout

def wait_timeout
  delay + 1
end