Images can be downloaded in multiple threads.  Therefore the call to self.failedURLs containsObject:url must be synchronized to avoid a collection mutation error.