First, if your son is loosing weight, call the doc again and if they won't do any testing or anything, find a new doc that will.
Second, here are some suggestions:
I know some people are going to gasp and cringe and even critize this response, but my son used to throw up when ever he felt like it. If he didn't want to eat something or if he didn't want to do something. He would MAKE himself throw up. (He was quite a bit older than 4 though) If he was doing it on purpose, he had to clean it up. It didn't take much of that to get him to stop doing it on purpose.
THEN....... he started throwing up again!! But NOT on purpose. He would eat supper and then either a few hours later or in the middle of the night he would throw up. It didn't happen after every meal, only supper and not all the time either, but after a few weeks/months of it happening I took him to the docs. the first time they checked him in the office and said he was fine and no reason for it. It kept happening and I called them AGAIN. He had to have an ultrasound of his gallbladder, liver and something else I think. Still nothing. We started watching him eat and it was because he wasn't chewing his food. We started making him slow down and chew his food and we haven't a problem since. He's now 12 and sometimes he will eat fast, but we warn him that if he doesn't slow down and chew his food, if he gets sick later we aren't going to help him.
I know your son takes a long time to eat, but maybe he isn't chewing his food very well. But I would call the docs again and if they still won't do any testing, find a different doc who will. I also wouldn't teach him to eat too quickly. I would say, give him his plate/food and if he isn't done eating when the rest of the family is done, there are two options (we do the 2nd at our house) #1 when everyone else is done eating clear the table, even his plate whether he is done or not and then nothing after that until the next meal. #2 (this is what we do) when the rest of the family is done, excuse yourself from the table, clear your plates and such, but leave him at the table by himself. We do this occasionally with my stepdaughter because she eats slow and (most of the time) talks WAY too much and doesn't eat at the table. The boys asked to be excused when they are done and we let them and when we are done we get up and if she has to finish her meal by herself, then she has to. That's her choice. Since we started doing that, she not always the last one at the table anymore. Sometimes, but that girl LOVES to talk!! LOL!!
I hope you find a solution!!