1.30: better async cancellation