I don't think that's a bug. `yield` should only yield to processes of the same priority. If there are none then it's a no-op. That primitive is correct.
However, your example should not need to `yield` at all. Changing a process priority should call wakeHighestPriority, IMHO.