Firstly, he's kind, loving, no sn or behavioural issues and our relationship is brilliant and I am not normally a shouty mum - just to provide context. He's 5 in November.
On the way to nursery this morning he began a conversation about red ants and how he killed one which was ok because his friend killed one too. I said it's not ok to kill things and I didn't want him to do that again even if his friend does. He realised he had wound me up so proceeded to push the boundaries more by laughing about it (this is the thing that really got to me) and talking about how he likes guns and bullets and he'd use his gun to kill (because he knows my thoughts about guns). This developed into a gun that fires poisonous berries into dh and my mouths etc. He continued trying to get a reaction so I wondered if he'd stop if I ignored him, didn't reply. He kept going on and on saying more and more outrageous things and laughing about it. By this time my blood was boiling so I turned the radio up to drown him out. Eventually he went quiet and tried to get my attention (nicely). I basically rounded on him, shouting at him asking him if he'd finished talking about hurting and killing people (and laughing about it) because I was really, really angry that he'd said those things. He began to cry but I was now in full flow and wanted him to know exactly how unacceptable his words were. Tears were rolling down his cheeks by now.
We both went quiet after a while and eventually he tried to engage again by saying he was upset because I had shouted at him. I had calmed down by then and my heart broke a little bit so I said I was sorry for shouting but asked if he understood why I was so angry. He said he didn't so I explained that although it was just words to him, I was angry because killing someone is the very, very worst thing a person can do and it's not funny - the reason mummy doesn't like guns is because real guns hurt and kill people in real life. I reminded him what 'dead' means (he understands that it means something or someone is gone and can't come back) and used his dead hamster as an example. I said if he ever saw other children hurting or killing an animal or hurting another person he should tell them not to because it was wrong. When we got to nursery I gave him a big cuddle and kiss, told him I loved him and that he's a kind little boy but hurting and killing is not a kind thing to do. I said we'd say no more about it but I didn't want to hear those things again.
I don't think he fully understood the impact of his words - to him it was just a game and a way of getting a reaction. He still had red tearful eyes when I dropped him off and was very subdued. I have spent the journey to work worrying that I've gone too far - the thought of him being so upset while I screamed at him is awful. But at the same time, I wonder if the shock will do some good (I am normally very patient so he knows he's really crossed the line when I get so cross).
Has anyone had a similar experience? How did you handle it? Is this normal behaviour or should I be worried? Was I right or wrong to react as I did?