So I agree the control flow is a little complicated. The 'else' clause is reached if no exception was raised. The report.state will not be 'downloading' (currently) iff we didn't break out of the i/o loop, which only occurs if the is_canceled flag gets sets. This all happens in the 'try' block, before we reach the 'else' clause. I don't want to overwrite the 'cancelled' state, and I wanted to "future proof" the conditional in that we may add timeout, or some other, unforeseen, early exit from the i/o loop. So I deliberately check for the report still be in the 'downloading' state. :book: