fix: return early on cancel