When considering the type of routine to be use, you must first be aware that ESL itself is a 'single threaded' application. This means that only a single event can be processed at a time. If an event takes a considerable time to process, then the ESL application will stop responding. Once the long running event has finished processing, the triggers (or stimuli) that have been queued, are processed. To prevent the ESL application becoming non-responsive, you need to select an Asynchronous routine. A typical use of an Asynchronous processing routine would be retrieving data from a database.