There is no unescape in:
readStringArg()
copyStringArg()
compareStringArg()
So you got (with ID=1) from readStringArg() for the transmitted string:
1,Hello\,World\;Or what?;
"Hello\,World\;Or what?"
Of course you can unescape this no in user sketch, but I think, this is not as it should be?