Why do I get wrong, doubled input value on keyup when typing fast?

When one is typing slowly “a” & “b” the above code will result in “a”, “b” in the console log. But the problem is when somebody does it quickly. The result then is “ab”, “ab”. It’s easier to repeat this situation with letters which are near on a keyboard e.g. “e” & “r”. How to avoid it? Events keydown and keypress does not suffer from this problem of quick-typist, but they are also fire to early. Result: returned value of an input does not contain the last typed letter when they occur. Or maybe there is a way to get