We are using the kernel provided `sleep()` calls to implement these, which is **NOT** user signal aware. Maybe we should use `CondVar` for this?