I was able to put into words why handle message wouldn't work using just closest preceding node.

We need to use find_successor.