Test on KJob abstraction, this way we can check if it has an error when it breaks. Handle errors in a different branch of the code.
There are still some code paths where it doesn't get destroyed though, like when the device gets unreachable (and the download socket doesn't close for some reason).