async reader implemented