i see what you did there ;)
However, I also noticed it basically takes the position of the unit later on to check for collision detection. Which basically is tricky, because this is a-synchronous and therefor later, on line 155, the position is reset back. Better would be to , somehow, store the desired vector in the PreMoveMessage. And when its an OK, move to that. Or even better, the moveMessage gets the 'move to this vector'. THat way we don't need the shouldMove flag as well.

I tried to make this work like above, but didnt get it working yet. Perhaps you can work on it, or we can work on it tomorrow evening together?