Cancels reservation.
Cancelling should be guaranteed at least in
the following sense: cancelled reservation's callback won't be invoked.
However as callbacks can be invoked from another thread,
the following scenario is possible and should be accounted for:
- callback is scheduled for execution, but hasn't started yet
cancel
method is invoked
- callback starts execution