I think the major thing at this age is the kids trying to assert their independence. The one thing I noticed from what you said is that you are not being consistent-you are giving into his crying. He wants to have a tantrum, let him and walk away, even if he throws up from the crying. After a few days of you showing him you are not upset by his behaviour and he is not winning the negotiation and getting what he wants (that is what a tantrum is all about), trust me, he will improve.
Noa has been going through a very fussy period. I have decided, she'll just have to eat what I give her and I know she has eaten before. Today I made cinnamon oatmeal for her and I know she has eaten it before. I tried putting her in her high chair-no luck. Tried putting it on the table and letting her sit near her dad ona chair by the table..no luck. At some point she sat in the chair to play. I put the oatmeal near her, went about my business and beofre I knew it she had eaten the whole thing and wanted more. Same thing a bit later when I baked carrot cupcakes. Knew she would love them, she had a fit didn't want one, went about my business and a few minutes later she was pointing to them and asking for one.
Your son is picking up on your worries and on your giving in because of that. Offer him a few things that are healthy and you know he has had in the past-and if he'll eat, he'll eat, if not not. If you are strong-he will end up doing what you want in the end. Not easy though!