Following on the experiments, I did some timings (mS).
I have two HTTP streams, one a heartbeat every 300mS (The main Loop) and the other reserved for the main commands.
0: Sent to machine gcode=G0%20X150%20G0%20X300
1: Sent to machine gcode=G0%20X150%20G0%20X5
25: Answer OK = {"buff":241}
25: Request machine response
26: Answer OK = {"buff":239}
27: Request machine response
48: Answer response OK =
58: Answer response OK =
149: main Loop status=B (asynchronous to 0 point )
17859: main Loop status=I
As far as I can see, the machine does not go idle until the whole command line is processed and, in this case, all moves are completed.
In reality, I will not be sending the second set of gcodes until the answer back from the first.
So after sending the commands and the buffer being reduced, the only change I can detect is the status code 17 seconds after the first transmission.
Am I missing something?