Minor nit: the underscore `debounce()` function takes parameters in the opposite order: callback first, time second. We may want to follow the same conventions.

I also wonder if we should just call this `debounce()`...