Teach him HOW to communicate.
Teach him, HOW to say his feelings. In a palatable way.
A child or adult, can be grumpy or majorly irked... its human... but we ALL need to learn, HOW to say it and practice our tone of voice, and actions when we feel like that.
A child, does not come automatically with those skills. It is TAUGHT.
Not even some adults, are expert at it, right?
So for a mere 3 almost 4 year old.... it is doubly hard. They need to be taught, the skills for that. And that it takes PRACTICE.
Just like, for an adult.
My son, is similar. But, he is a great boy and very intelligent and he KNOWS his feelings and has great deductive reasoning, even at his young age. Still, I know he is a young child. He is 5. So we just continually teach him... more palatable ways of explaining to us... how he feels, why, and the situation. Instead of just telling him, be quiet or stop it. That just makes the child MORE frustrated and MORE pent-up.
A boy.... NEEDS to learn how to express himself... much like we women, because we are more verbal and emphatic.
If a boy learns he is not allowed to say things... nor is he helped with HOW to express that in more tangible and palatable ways... then, he will not learn. So, WE need to teach that, to a young child.
Otherwise, we CANNOT just 'expect'... the child to automatically know those skills nor to just do it.
3 & 4 years old, is developmentally hard.
People expect them to act 'older' even if they are not. They are on the CUSP of being a 'big boy'... but still, they are developmentally, learning. Not having those skills, intrinsically known.
So, for our son, instead of just punishing him or just saying stop it all the time... we talk WITH him, role-play, teach him ways of speaking/communicating/how to express his feelings (justified or not), and then, he realizes, that he is being understood AND that we are helping him... not just expecting something and leaving him to his own fumbling recourse. Because.... a child does NOT know sometimes, what to do or how to express thing, unless we help them. Instead of just 'expecting' it to happen.
NO kid, is 100% good all the time nor pleasant.
And, if a young child is always perceived as being a 'pain in the rear'... then they know that... and it will only make them, more frustrated. Especially if actions against them are always, negative.
You said, your son is 90% "good."
How about, instead of expecting him to be great all the time, you teach him to "try his best".... and then help him. And notice when he is trying.
That will encourage him more.
Do not assume, that he has all the skills or aptitude or ability... to self-manage. He is only a young child... he is only, 3 going on 4 years old.
A child this age... needs to be GUIDED. In how... to handle frustrations.
Again, not even many adults, know how to do that.
Just punishing, will not teach him these skills nor increase his aptitude, for managing his emotions.
And also, if a kid is tired or over-tired... they get more like this.
So he needs to nap.
My son, when he is tired or over-tired, he gets more argumentative.
And I have taught him, that he needs to rest and that napping is not 'bad' and that it helps him. He knows that.
He is 5 and will still nap.
Your son acts like that, because he is frustrated and/or does not 'know' how to express it.
So, guide him.
Teach him.
Give him the ability to 'problem solve.'
Teach him COPING-skills.
Kids, do not have those skills. It is taught.
Teach him, that there are MANY ways, to problem solve something and MANY ways to think about frustrations.
Even humor.
Don't feed off of his, outbursts or frustrations. Be his Guide.
That is what we do. With my son and daughter.
Then THEY gain "ability" to think about their own frustrations, too, in conjunction with our guidance.
When they are irked, we tell them "problem solve that... what can you do to feel better? What can we do to help? What can you do, instead of yelling?" And then, TOGETHER with them, we 'problem solve' the situation.
THAT.... teaches them, HOW to manage, how to look at things, how to think of MANY ways of handling difficulty.
THAT... is golden. Because, it teaches them the aptitude for long term, self management and handling of their emotions.
When my son has moments like that, even if it is hard... I will calm myself... sit down, and tell him "Okay, you are frustrated for some reason. Tell Mommy... why. Tell Mommy how you feel. Its okay. I want to understand where you are coming from...." and then he tells me. And sometimes.... I REALLY have assumed 'wrong' about him. And then, I realize... HOW complex his deductive reasoning is and how complex his reasons are, for feeling a certain way. Then I realize, I got him all wrong... and together as a TEAM... we figure it out. Then he feels all better. Problem solved.
I also do not just 'expect' him to perfect.
No child is.
And sometimes, a kid just needs to TRANSITION... to the next thing we want them to do.
So that means, telling the child "In 15 minutes, Mommy wants you to brush your teeth. You can finish playing with your cars until then." I do that with my son, and then in 15 minutes, I tell him. And then he simply says "Okay Mommy I'm done. I'm going to brush my teeth now." And he does. Transitioning.
Which also means, compromising, too.
Many kids, don't do well with 'abrupt' sudden orders.
Give the child a head's-up first. About what is coming up or what is coming up that you want them to do.
Many kids, are verbal, smart and stubborn.
But it is up to us, to guide them, and manage them.
They are young. They don't have these automatic skills.
And they feed off of us.
And they, catch our vibes. Too.
Teach your son, the word "compromise."
That is one of the first words I taught my kids, at 2 years old.
I told them it means taking turns and sharing... their time. With what we need to do.
They understood, even at 2 years old.
Don't assume, just because your son is 'smart and verbal' that he knows how to do everything.
Kids at 3 to 4 years old, is a very hard age.
They still need to be guided and practice, skills that you teach them.
It takes all of childhood.
Then in the teen years, things like this occurs too.