always trigger cancel callback