'Unschedule this call
@raise AlreadyCancelled: Raised if this call has already been
unscheduled.
@raise AlreadyCalled: Raised if this call has already been made.'

def cancel(self):

    if self.cancelled:
        raise error.AlreadyCancelled
    elif self.called:
        raise error.AlreadyCalled
    else:
        self.canceller(self)
        self.cancelled = 1
        if self.debug:
            self._str = str(self)
        del self.func, self.args, self.kw
