Make cancel idempotent

A colleague of mine ran into a huge stacktrace when he accidentally cancelled a consumer twice, so I fixed it.