use explicit finished flag instead of nil-setting readerBlock