Due to how the requests are managed in wm-typeahead.js, results often arrive out of order. When that happens, the last one to arrive is also the last one to be applied to the user interface.
As such, I quite frequently experience that the shown results are for outdated query.
E.g. when typing "Amsterdam" I often get results for "Ams" and then it stays that way.
The current implementation does dereference JSONP script elements, but this does not cancel or abort the request. Even if cancelation was possible in browsers for script tags (which isn't possible), I'm not recommending that. Cancelling the previous request on each key stroke would mean that on slow connections no results show up until the user lets go of the keyboard for long enough.
Instead, the response handler should make sure to never apply updates for a response older than the last received response.
This way, when the user types "A", "Ams", "Amsterdam" and results arrive as "Ams", "Amsterdam", "A" the user sees results for "Ams" and then "Amsterdam". The response for "A" must be ignored.