reverse: clean up read path

Also, propagate errors properly.