@kittinunf: yes, I'm 99% sure that cancel is calling while task is not completed/cancelled.
My request is a Comet – after request is sent the server keeps it for 30 seconds and either respond with array of events if these events has occured, or respond with empty array if there was no events.
So my case is this:
1. request sent
2. in 2-5 seconds I perform a cancellation
3. nothing is cancelling (according to the mitmproxy) and after the timeout the success handler is calling