Besides, why would we ever make an API where you HAD to call Cancel before Close? I makes no sense at all and is horrible design. Just put the cancel in the Close() call. It's two separate methods for a reason. It makes no sense and is ugly and a dumb API if you HAVE to call cancel before Close. 