I believe I understand what you're saying but I don't think what you're describing is actually a condition that should be considered "starved".

Responding to messages as they come in would imply that you're not actually using `IsStarved` (what would be the point?).  Handling them sync or async is irrelevant.  If you process and respond to messages as they come in, due to the fact that `RDY` state is handled on the incoming side, you wont deadlock due to starvation.