fix do_read_cb -- preserve exit behaviour