add async read for use in watch