Every blocking call must be able to return after a timeout. For a blocking call like waitFor, periodical tests should be provided.
Zeromq reliability: http://zguide.zeromq.org/php:chapter4
Failure example: remote app starts but a network failure happens before the setResult. The change of state is ok but not the starter which blocks on getResult in the recv call.