what if we used the old behavior, but only if `t.runnable = true`? thus it would be ok to switch back to a task after an explicit yieldto (leaving `t.runnable = true`), but nothing would happen if the task was waiting for some signal?