also guard against receiving SUCCESS with 0 byte read ms docs say that pipes can do this if there is a 0 byte write