avalon_read should not loop but just return whatever it has succeeded in reading.