Click a button and an event is generated. Submit a form and an event is generated. Actions on the web page generate events. Events to reload parts of your page, to open dialogs, to do anything.
All events are queued and asynchronously handled by the server. You don't have to wait for one event to be finished before another one can fire.
On the server, events are delegated to the routines that want to handle them. It is easy to write modular code.