Issue #33 - Avoid calling 'cancel()' manually

* This will prevent the infinite loop
* TODO: Any listener should call 'cancel()' safely