Delegates are not synchronized by ConcurrentDictionary.

Although all methods of ConcurrentDictionary are thread-safe, not all methods are atomic, specifically GetOrAdd and AddOrUpdate. The user delegate that is passed to these methods is invoked outside of the dictionary's internal lock. (This is done to prevent unknown code from blocking all threads.)
See http://stackoverflow.com/a/10486654/90882