Thread-safe version that locks access to the delegate internals. we don't have a recursive RW mutex yet, so "read scope" is actually a write scope. This means that concurrent reads of a thread-safe delegate are mutually exclusive