nyctea, I don’t see B being an asshole about it at all. Have you left out some details, or do we just mega-disagree on what constitutes assholery? Looks to me like:
a) You set up a party, which he agreed to come to because he’s your friend;
b) His friend S set up a party, which he agreed to come to because he’s her friend;
c) You tried to turn it into a contest of “who do you like better?”, which it in no way needed to be, and which was a rude and inconsiderate thing to do;
d) He tried to compromise by being at your party during its most partylike stages (i.e., when it was at your house) and being at S’s party when yours seemed least partylike (i.e., when it was at the pub), and told you this in a polite email; and
e) You responded with nastiness, vitriol, guilt-tripping, and accusations to his suggested compromise.
What part am I missing? Where is B being an asshole?
You owe him a big apology. There’s no sign whatsoever that B is being disloyal, unless you consider anything beyond unquestioning obedience to your demands to be disloyalty. He can have a life beyond yours, have friends besides you, and still be a loyal friend; if you demand that he consider only your feelings when making his decisions, you demand more than a real friend has any right to demand.
If you drop him as a friend, I don’t see how you can blame anyone besides yourself. If he drops you, I don’t see how you can blame anyone besides yourself.
You really need to step back and look at how petty this is going to seem in two months: he’s going to be at your party for half the night, and he’s trying to compromise. Then you need to write him back, apologize for being so rude and inconsiderate, and tell him that of course you’d love to have his company for as long as he’d like to be at your party, but that of course you won’t be so overweening as to demand he stay at your party for the full night.
Please do it soon, if you want to salvage the friendship.
Daniel