Yep, good catch @jehiah.  I think the "right" fix is:

1. this section of code moves out into a new method `update_rdy`
2. combine it with the "normal case" code that is in `handle_message` right now
3. in both spots where code used to be call the new method

Also, clearly this is getting a bit hard to follow.  @jehiah had mentioned before that it might make sense to clean some of this up, my suggestion starts to head in that direction, but maybe this deserves a follow-up pass....