Turned out it wasn't a Bridge issue, but rather how Stream::timedRead works
It waits 1 second after having received the last character
Modify your sketch this way
if (client) {
client.setTimeout(5);
It should become nearly instantaneous.
Tuning timeout depends on the quality of your connection: if it's poor and the timeout is too short, you may end up with incomplete commands