SendOnInstalledEventThenWaitForReceivingAndCloseAfterThat() :P
I think we should do following:
1) FinishEventObserver -> CloseOnEventArrived
2) create "Create" method for the mentioned observer class: CloseOnEventArrived::Create(ApplicationEventManager* event_manager, const std::string& event_name); // you see, it is generic now
3) invoke "event_manager->SendEvent(app_id, event);" on client side |=> SendOnInstalledEventAndObserve will not exist anymore