Reads a byte (suspending if no bytes available yet) or fails if channel has been closed and not enough bytes.