Avoid the mess of having lots of functions call back to _initMsg() just because they might be able to continue right away. Instead loop at the top level until we're either done, or we need more data.