3-4s delay is not necessary if all result pages are not preloaded (e.g., we only load the next page of results).
The delay for <3 characters, should be something like 300-500ms. Perceptible, but only runs when the user has clearly paused typing. The delay for ≥3 chars can be shorter (e.g., 150-300 ms).
See openmrsSearch.js, openmrsmessages.js.withjstl and the default value of global property OpenmrsConstants.GP_SEARCH_WIDGET_DELAY_INTERVAL