Under what circumstances should channel.advance throw an exception? Currently, an exception is thrown if amount is negative, on EOF for a reading channel, or if an I/O error occurs while advancing. Should advance throw if amount is negative? It was proposed in the module review that it simply do nothing in that case.