I think you need to clear any set timeouts that will trigger any future searches after the search delay otherwise there will be 2 searches one triggered when the user clicks the button and the second when the search delay interval elapses