add readAll: bufio.Read does not guarantee to fill the buffer