reactor pattern vs observer pattern