Need to check if the explicit stop() before new wait() can be removed.
Otherwise there is a suspend hazard point here (and similar places).