If I needed the job, I would block his punch and egress the area. If I didn't need the job and knew I could get another I would kick his ass.
I've been in sort of that situation a couple times. Both times I was lucky in that I didn't need the job and knew I could get another.
The first time, a coworker in a warehouse (it was a summer job while I was in college) took a practical joke too far and I went after him but he ran like a scalded ape and got away. The second time, a drunk and abusive customer at the rental car agency at which I was the assistant manager threatened to "wait outside for me" and I jumped right up, got in his face and said "Fuck outside, do it right here. Throw down. Now."
He started doing the "umm, but, umm..." dance and finally his embarrassed wife pushed him out the door. Both times, I didn't need the job and would have gone round with them.