Switch downloader to use NSMapTable so we can avoid dispatch_barrier calls