core: use once for queue end event.