* Use the `ConditionVariable` primitive to fix rece between stopped
receiver Thread and its wake signal.
* Race was only observable via synthetical benchmarks and explicit
sleeps between unlocking receiver mutex and Thread.stop
* Simplifies code a lot as thread must not be passed around anymore