"He may be stressed but he needs to know you are not his whipping boy."
^^ This
Sometimes, people can get into a loop of behaviour, and for their sake (and the sake of those around them) they need to be brought up short about it.
He's been ill. We are all inclined to cut people who are ill a bit of slack, sweep any unreasonableness under the carpet - because 'they're ill'. But for some people, instead of being grateful for others being kind, it seems to bring about an expectation, an entitlement to continue the behaviour and have it excused. I don't think this is good for the ill person - it kind of encourages them to wallow in their illness IYSWIM. So, hard as it will be, I think you need to stop cutting him any slack at all. And tell your MIL what you are doing, because she's taking that path too ("she then sternly reminded me his days are probably numbered"). Point out to her it is counterproductive, driving this behaviour from him.
It will not be easy, but you need to calmly and firmly point out to him that this behaviour is unacceptable, that you have been patient but that you now realise that this is not actually helping, and that he now needs to get a grip and behave like the husband and father he is.
I know it sounds harsh, but sometimes, and I think this is one such situation, harshness is actually kinder in the long run.
((hugs))