From my testing, you can avoid this using the move_to_result enum.
By default, a MoveTo() call will return a move_to_result enum which contains the following.
You can then do something along the lines of testing that the move_to_result has the DestinationReached member, then call the MoveToAgain function recursively.
For example:
MoveNPC()<suspends> : void =
Result : move_to_result = Prop.MoveTo(Position, Rotation, Time)
if (Result = move_to_result.DestinationReached):
MoveNPC()