Ok, I looked through the code, Here is what I find, let me know if there's anything off!
Basics: calculates the twist between the current pose and the next waypoint. Then, make simple modifications to this twist and use it as cmd_vel
1. This planner will prefer turn and go if the user explicitly asks so and the angle in the twist is smaller than a threshold.
2. If the twist's linear/angular velocity is too high or too low, it will simply scale it down to the speed limit. This capping might be problematic as it changes the arc of the planner, e.g, If the angular component is large, linear component is small, the planner might end up outputting a series of crazy arcs.
3. Then if the current pose and the target pose is too close, the local planner will check the next goals to see if goal has been reached
4. If a new global plan is not ready yet, the local planner will keep planning for the existing plan.