I am against this kind of event. It just contributes to lots of clutter we already have. The use case is too specific and the implementation of the algorithm is less than 10 lines of code.
I think, a proper solution with setTimeout() is not tedious (as you only have to implement it once; make a library if necessary ;) ) and certainly not hacky, either.
const searchBox = document.getElementById('my-search-box');
var tID = undefined;
searchBox.addEventListener('keyup', ev => {
if (typeof tID !== 'undefined') {
clearTimeout(tID);
}
tID = setTimeout(displayAutocomplete, 1000);
});
Because of the length of the VanillaJS, I am strictly against using libraries!