I understand your point, but by not addressing it here, we de-facto worsen the situation, by having signals trapped in transaction for the new `RelatedManager.set()` and `Descriptor.__set__()` and not for `RelatedManager.clear()`.

Ironically, `save()` signals are actually wrapped in a transaction when it comes to related operations, since we must wrap all the consecutive `save()` into a single transaction. 

With the current patch we can say, "all signal handling on related set operations happen in a transaction", otherwise we have to document more corner cases.

That said, I don't mind updating the patch. I'd also be happy to work on addressing the root issue with another patch.