a working version of async reader