Returning condition variable instead of callback.
Remove CRs.
Use Data::Monad::CondVar.
Avoid undefined warnings.