Building an event-driven Reactive Asynchronous System