В событийно-ориентированном программировании давно используется система подписок на события, когда для ожидания какого-либо события достаточно лишь подписаться на него. Многие новички даже не знают как этот механизм устроен изнутри.
Внутри всё просто. Организация слушателей и обработчиков событий в событийно-ориентированных программах просходит след. обр.: имеется главн. цикл и в нём находится какой-нибудь из условных операторов ветвления, типа switch, что выбирает событие и передаёт управление его слушателям/подписчикам. Тело главн. цикла делится на 2 фазы — выборку события и обработку события.
Зная устройство событийно-ориентированой модели несложно написать её вручную с нуля, если есть такое желание, которое может возникнуть только из-за интереса, ведь везде, где надо это давно реализовано «из коробки».