Running with the approach that cancel must be implemented with sync