Regarding names... I chose "cancel" instead of "kill" because of the nature of this operations. You don't *ask* to kill something; you just do it. But since there's no way to kill a routine in Go, we're just asking for the routine to cooperate, checking whether there is a pending cancellation request. Also, system programmers tend to be used to "cancel", cause that's how POSIX names the action of ending a running thread. See pthread_cancel(). Unless you set that to asynchronous mode, the call can only cancel threads on certain *cancellation points*. That was the idea behind names.