ellie, it is hard. The thing that stopped me ending it for quite some time was that DD was also good friends with DSD and I was worried she would lose that friendship. But in the end, the behaviour became such that I could not ignore it, or explain it away, and if I had, I would have been colluding. And DD was more important (as was I).
It sounds like there may well be more going on here than just one incident, so maybe take a step back, give yourself and DS some space and assess the situation. Is it really what you want?
By the way, I also have a son, who is from the marriage I just left, which additionally complicated matters. He is much younger than yours, but I really hope he turns into a lovely young man full of empathy, who recognises when someone lacks generosity of spirit . You should be proud of him, and you have obviously taught him good values.
And last comment, most of my angries went when I ended it. Life is much simpler. It would have been nice if it had been different, but it wasn't.