This sounds reasonable except the comment in Delay implies it only is used for the active process.
We need to decide on the exact semantics, and enforce them in the priority setter:
* should it only reschedule if it is the active process? * should it only reschedule if the priority was increased, rather than decreased? * should it reschedule if the prior priority was nil? * should preemptionYields affect the behavior?
That's the ones I can think of off the cuff.