downloadExecutor.take() clears the interrupted state of the thread when throwing an InterruptedException. When getting this exception, we need to return instead of relying on the loop to get cancelled.
downloadExecutor.take() clears the interrupted state of the thread when throwing an InterruptedException. When getting this exception, we need to return instead of relying on the loop to get cancelled.