Rationale compared to Observer & Promise patterns