Make Observability module respect local context
When there is an error in the next stage, such as starting up the listener, the earlier stage would block and not unblock until the whole program is shut down due to an external signal. The correct behavior is to return from the earlier stage if the second stage failed. For that, it needs to respect the passed context.
Found while working on #24 (closed).
Edited by Mikhail Mazurskiy