I can think of scenarios where users cancel the requests from one thread and have default cleanup methods called from onCancel/onFailure events. We should use the background thread and I don't think it is a big issue that there is a delay between cancellation and getting the callback.

Let's punt on it for now and keep it simple until there is a more concrete use case.