Edit in JSFiddle

$("#search")
.onAsObservable("keyup change")
.select( (ev) -> $(ev.target).val())
.where( (query) -> query.length > 2)
.throttle(300)
.distinctUntilChanged()
.select(queryMovie)
.switch()
.subscribe(updateMovies)

###
lastEvent = {}
currentDisplay = ""
$("#search").on("keyup change", (ev)->
                   ref = {}
                   lastEvent = ref
                   query = $(ev.target).val()
				   return if query.length < 3
				   setTimeout( ()=>
                                  return if lastEvent != ref
                                  return if currentDisplay == query
                                  currentDisplay = query
								  queryMovie(query).then((results)=> 
                                                         return if query != $(ev.target).val()
                                                         updateMovies(results))
							, 300)
				)
###