cancel asynchronously