Todo: we should recheck cache just before downloading in case it has been downloaded while we were in the queue