UI is transient so you'll always have this problem...
# rx
j
UI is transient so you'll always have this problem unless you totally move the control of download outside of the UI and observe only its state (which would need to include "idle") from that layer