Okay, I’m going to be honest. I don’t know if I can recap all of these reunion episodes. You know when you’re eating something that’s nice and greasy, a guilty pleasure, and then you drop some of it on your shirt? And you can see, immediately, the way the oil has penetrated the fabric of a garment that you really like? Suddenly that guilty pleasure becomes loathsome, because not only will it make you fat, but also it’s ruined something good that makes you happy. This is how I feel about Housewives reunion episodes in general. They take something fun and pretty and make it horrible and scarred. (Or, in the case of the Housewives of New York City, they take something that was relatively tattered as it was and turn it into a gruesome, bloody mess.) All that fluff you could forget about the next day becomes indelibly, awfully permanent.
The flip side of all that wretchedness is that when all the ladies are screeching at each other across Andy’s lap (no wonder he’s cross-eyed, honestly) is that it’s relatively easy to choose a winner. So here we go.
Ramona scored her first point when she said to Jill: “You always lie, and then when you really get caught with it, you admit it.” She followed that with: “You don’t know the difference between TV and reality, and I feel really sorry for you.” Those are correct things to say to these ladies, but unfortunately they apply to Ramona as well. I think she knew, on some level, that anything said in the reunion episode comes across as hypocritical, so she tried to stay quiet most of the time, which was wise. But she couldn’t help herself every once in a while. For example, she was almost the bigger woman about her friendship with Cindy, until she lashed out randomly at the brunettes. All in all, she wasn’t at her best. Smiling all the time doesn’t make you look nice, Ramona, it makes you look like a serial killer.
During Sonja’s tearful admissions, Jill had the most ridiculous fake smile on her face. This sort of disingenuousness continued for much of the show, until finally, thankfully, she lost her temper and started calling people bitches. That’s the real Jill! It’s just too hard to swallow her excuses and efforts to be nice, like when she said she “left the room” when Kelly started talking shit about Sonja in Morocco, even though they were all sitting outside when that happened. She’s best when she’s honest. Because the thing is, Jill’s almost always right about Ramona. She’s a jerk, but she has the woman totally pegged. But when she starts making claims about Mario cheating on her, that just goes too far. If she was a journalist, she’d be fired for repeating something she heard at a party — with no evidence — on TV. Whether or not it’s true, it’s entirely too cruel to spread around willy-nilly.
Is it me, or does Alex seem like she’s fighting to stay on the show? She rightly started by being normal and understanding about the Sonja situation at the marriage equality march, while also recognizing that Sonja misbehaved. “If we hadn’t had that fight, marriage equality wouldn’t have had that extra nanosecond of publicity,” she said, and I think she was correct. She also tried to corral Ramona when Ramona was being mean about LuAnn’s kids, which was the right thing to do. But then she went into fighting mode with the other ladies, and that is where she’s not at her best. Yes, she got Jill to admit she thought Alex was a bitch (recover from that next season, Bravo), and yes, she scored when she said, “I think it’s far ruder to say ‘you’re an effing bitch’ at a wedding than to wear cream at a wedding.” But fighting with Kelly and Jill only makes them stronger, and Alex should know that by now. (For what it’s worth, I disagree with Kelly. “If I could fake [my hives] I’d get an Academy Award” is a pretty good line.) …
Cindy teared up when Sonja started crying, which is to her credit, and indicates that they do have a sort of friendship on some level, despite what the producers would have you believe. (And despite the fact that they bickered for the rest of the episode.) Here’s the thing about Cindy: She wasn’t a part of the show, and that’s a problem. She has a punchy personality, which should have worked, but she wasn’t in on any plotlines. So, yes, she had her fights with Sonja, but that was pretty low-level on the scale of bitchery on the series. For the rest of the time, she has to just react humorously to things, like when she told Ramona she was on crack for dwelling on the wedding from episode two. And that only makes medium-quality TV. (She did, at one point, reference how she’d talked to the producers about how she needed to make that conference call during brunch, which made the whole thing seem a little unfair to her … )
Kelly started the episode by quietly, under her breath, chanting “That’s not what happened. That’s not what happened.” Could that be her mantra for the whole show? Because, really, her shtick is that she doesn’t interpret things the way they actually happen. For example, she thinks she is a nice person. A “REALLY NICE PERSON,” because Cosmo told her so. When she said that, and Alex just shot back “Not really,” it was perfect. Because Kelly’s the opposite of nice. To prove it, Andy showed a clip of her being a jerk about Sonja’s house, and not ten seconds afterward, Kelly denied that she’d said any of the things she’d just watched herself say. Later, she wailed, “I’VE GOT TO BE THE PEACEMAKER” during a fight between Cindy and Sonja, and thankfully, Andy, LuAnn, and Jill told her that she was actually doing the opposite. Honestly, Kelly did pretty terribly this episode, mostly because she opened her mouth — a thing we thought she’d learned not to do this season. (But kudos to her for admitting she was hurt by Sonja’s vagina.)
The only two people who did well this episode were LuAnn and Sonja. LuAnn made an effort the whole time to be fair, which was downright jarring. (Obnoxious, also, but no less so than being a stubborn jerk, which is what the other ladies were doing.) She rightly said she was uncomfortable with what Kelly said about Sonja’s house. And she was right about Sonja and Ramona being selfish to draw attention to Ramona’s pregnancy during her party. She took care to reference a fun thing that didn’t happen on air but happened in real life, which was a night out with the blondes in Morocco. And she scolded her fellow brunette Cindy for taking the phone call during Sonja’s brunch. So it was hard not to root for her by the time she said to Ramona: “You know what, we made a promise to each other doing this show that we would never go after the children or families, and don’t you think my kids are going to watch that? How could you say those things to me?” Because she was right. Ramona was a jerk to say those things, and by not behaving insanely through the reunion, she was able to make that point coherently. She even made Ramona seem like the crazy, mean one in a discussion about how LuAnn had an open marriage. Well-played.
Which leaves Sonja. Honestly, I don’t know how she could have played this better. She started the episode by refusing to get in a fight with Alex, and then comes across as educated and serene about her bankruptcy. “You know, filing for chapter 11, you’re asking for the mercy of the public,” she said, pragmatically, as the other housewives faked sympathy. “And the public deserves to know.” Her feelings on the whole matter were just so well thought-out. “What was upsetting to me was not the seven million dollars. What was upsetting to me was that my marriage fell apart,” she said, winningly. And she said nice things about her ex-husband and her daughter, which is almost unheard of on this show. (She also pointed out that she hasn’t gotten her divorce settlement, which explains some of her financial situation.) “That was a chink in my armor,” she said. “Because, you know, I was really proud of my marriage.” She even explained why she wasn’t prepared on the day of the Skweez “focus group.” Her reasonableness really shone through in the entire episode. Like when she admitted she gets comps to throw parties, and when she noted that while she doesn’t live in her husband’s home, there’s nothing wrong with the people who do do that. By far, Sonja won this round.
Ancillary Winners: Whoever the Marriage Equality March organizer was who got bleeped out: Because that was a huge save. (P.S., it was Ron Zacchi.) Bethenny: For playing such an outsize role in a show she’s already left. Jill even admitted she was scared of her! Brian: All the housewives seemed genuinely sad about Brian and Sonja breaking up. Neil Patrick Harris: For saying during Watch What Happens Live that “It was like a migraine headache, the whole reunion,” and for suggesting that Andy replace everyone on the show.
Ancillary Losers: Andy Cohen: What’s fun is to watch Andy, one of the biggest divas in showbiz, pretend to be the reasonable one. You go, girl. Keep up with that illusion. Cesar: Sonja’s cute stylist gets outed for dropping his BlackBerry in the toilet. “He never knows what’s missing.”
By submitting your email, you agree to our
Terms and Privacy Notice
and to receive email correspondence from us. This site is protected by reCAPTCHA and the Google
Privacy Policy and
Terms of Service apply.
or
Already a subscriber?
What is your email?
This email will be used to sign into all New York sites. By submitting your email, you agree to our Terms and Privacy Policy and to receive email correspondence from us.
Password must be at least 8 characters and contain:
Lower case letters (a-z)
Upper case letters (A-Z)
Numbers (0-9)
Special Characters (!@#$%^&*)
This password will be used to sign into all New York sites. By submitting your email, you agree to our Terms and Privacy Policy and to receive email correspondence from us.
You’re in!
As part of your account, you’ll receive occasional updates and offers from New York, which you can opt out of anytime.
or
Already a subscriber?
What is your email?
This email will be used to sign into all New York sites. By submitting your email, you agree to our Terms and Privacy Policy and to receive email correspondence from us.
Password must be at least 8 characters and contain:
Lower case letters (a-z)
Upper case letters (A-Z)
Numbers (0-9)
Special Characters (!@#$%^&*)
This password will be used to sign into all New York sites. By submitting your email, you agree to our Terms and Privacy Policy and to receive email correspondence from us.
You’re in!
As part of your account, you’ll receive occasional updates and offers from New York, which you can opt out of anytime.
Already a subscriber?
Already a subscriber?
`;
// integrate Sub(x) scripts and elements
if (hostname !== 'subs.nymag.com') { // do not integrate on this subdomain
document.head.appendChild(trackingScript);
document.body.insertAdjacentHTML('beforeend', subXAnimationElements);
}
There was an error processing the request. Please try again later."}).catch(e=>console.error("Error verifying email: ",e)))(r.querySelector(".content"),o.bannerCTAVerification)})):(l.remove(),s.remove()),o.dismissable||n.remove(),o.useAlertIcon||a.remove(),r.classList.add("show"),n.addEventListener("click",()=>{u(),r.classList.remove("show")})}else r.remove()}});
}, {"1":1,"6":6,"12":12,"35":35,"40":40}];
window.modules["global-nav.client"] = [function(require,module,exports){"use strict";const dom=require(3),auth=require(12),signInButton=dom.find(".user-signin"),signOutButton=dom.find(".user-signout"),globalNav=dom.find('[class^="global-nav"]'),body=dom.find("body"),dropdownItems=dom.findAll(".dropdown-wrap"),gtm=require(1),appendLandingPageParams=require(136),pageUri=require(124).getPageUri(),subscriptionPromoLinks=dom.findAll(".persist-params"),searchString=window.location.search||"";function closeDropdowns(e){let n=globalNav.querySelectorAll(".dropdown.open");dropdownItems.forEach(function(t){let o=t.querySelector(".dropdown");!n||t.contains(e.target)&&27!==e.keyCode||o.classList.remove("open")})}function gtmSendReport(e,n,t){let o={eventCategory:"ecommerce",eventAction:"componentClick",brand:e,dimension23:"global-nav",list:pageUri,pageZone:"header",variant:"nav-link"};"global-nav-link"===t&&(o.eventLabel=n.href),gtm.reportNow(o)}function updateElementTargetUrlsIfQueryStrings(e){if(searchString){const n=new URLSearchParams(searchString);let t=e.href;if(t.includes("?")){const o=t.split("?"),i=new URLSearchParams(o[1]);for(let e of n.entries())i.set(e[0],e[1]);t=`${o[0]}?${i.toString()}`,e.href=t}else e.href=`${t}?${n.toString()}`}}function init(e){const n=e.querySelectorAll(".to-landing-page");window.addEventListener("auth:init",()=>{signInButton.addEventListener("click",function(e){e.preventDefault(),auth.showEmbeddedLoginFlow("top navigation")}),signOutButton.addEventListener("click",function(e){e.preventDefault(),gtmSendReport("Sign Out",e.target,"user-info-link"),auth.logout()}),auth.isAuthenticated()&&e.classList.add("signed-in"),auth.isSubscriber()&&e.classList.add("subscribed"),e.querySelectorAll(".user-link").forEach(e=>{e.classList.add("active")}),subscriptionPromoLinks.forEach(e=>{updateElementTargetUrlsIfQueryStrings(e)}),appendLandingPageParams(n)})}dropdownItems.forEach(function(e){e.addEventListener("click",function(){e.querySelector(".dropdown").classList.toggle("open")})}),body.addEventListener("click",closeDropdowns),document.addEventListener("keydown",closeDropdowns),globalNav.addEventListener("click",function(e){let n=e.target;n.classList.contains("global-nav-track")&>mSendReport(n.text,n,"global-nav-link")}),module.exports=init;
}, {"1":1,"3":3,"12":12,"124":124,"136":136}];
window.modules["aaa-module-mounting.legacy"] = [function(require,module,exports){"use strict";const _pickBy=require(221),_each=require(408),Fingerprint2=require(407),DS=require(406),Eventify=require(246);function registerGlobals(){window.DS=DS,window.Eventify=Eventify,window.Fingerprint2=Fingerprint2,DS.value("Eventify",Eventify),DS.value("Fingerprint2",Fingerprint2),DS.value("$document",window.document),DS.value("$window",window)}function mountDollarSliceComponents(){DS.service("components",["$document","$module",function(e,n){var o=_pickBy(n.definitions,e=>e.providerStrategy===n.providers.controller),r=Object.keys(o);function t(e){return o=>{try{n.get(e,o)}catch(e){logMountError(o,e)}}}_each(r,n=>{var o=e.querySelectorAll('[data-uri*="/_components/'+n+'/"]'),r=e.querySelectorAll('[data-uri$="/_components/'+n+'"]');_each(o,t(n)),_each(r,t(n))}),this.components=r}]),DS.get("components")}function logMountError(e,n){const o=e.outerHTML.slice(0,e.outerHTML.indexOf(e.innerHTML));console.error("Error attaching controller to "+o,n)}registerGlobals(),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{mountDollarSliceComponents()}):mountDollarSliceComponents();
}, {"221":221,"246":246,"406":406,"407":407,"408":408}];
window.modules["ads.legacy"] = [function(require,module,exports){"use strict";const _map=require(118),_forEach=require(107),_isString=require(268),_intersectionWith=require(409),_isEqual=require(274),_each=require(408),_debounce=require(182),_sortBy=require(205),page=require(124),visit=require(114);DS.service("adService",["Eventify","$cid","$document","$window",function(e,t,a,i){var o,n,s,r,d,c,u,l,g={},p=this,h=[],f=visit.getQueryParamsObject(["utm_campaign"]),m=document.querySelector('script[data-type="ad-a9"]'),b=[],w=!1,v=[],y=document.querySelector('script[data-name="ad-doubleverify"]');document.querySelector('script[data-name="concert-ads"]')||(i.NYM={},i.NYM.analytics={},i.NYM.analytics.adStartTime=i.performance.now(),i.googletag=i.googletag||{},i.googletag.cmd=i.googletag.cmd||[],u=i.googletag,(m||y)&&(i.googletag.cmd=i.googletag.cmd||[],i.googletag.cmd.push(function(){i.googletag.pubads().disableInitialLoad()})),m&&(l=i.setInterval(function(){void 0!==window.apstag&&void 0!==window.apstag.timeout&&(i.clearInterval(l),window.apstag.cleared=!0,l=null)},10),setTimeout(function(){l&&(i.clearInterval(l),i.googletag.pubads().refresh(),window.apstag||console.log("MESSAGE: Timeout for A9 load exceeded, aborting"))},500)),y&&(b.push(new Promise(function(e){w?e():v.push(e)})),c=i.setTimeout(T,2500)),o=function(e){var t,a,o=e.data,n=[];return o.loaded?e:(o.loaded=!0,t=null,(t=o.sizes?u.defineSlot(o.name,o.sizes,o.id).addService(u.pubads()):u.defineOutOfPageSlot(o.name,o.id).addService(u.pubads())).setTargeting("adid",o.id),f.hasOwnProperty("utm_campaign")&&t.setTargeting("utmcamp",f.utm_campaign),a=p.getAdCount(o.label),t.setTargeting("label",o.label+"_"+o.site+"-"+a),u.display(o.id),u.pubads().addEventListener("slotOnload",function(){i.NYM.analytics.firstAdLoadTime||(i.NYM.analytics.firstAdLoadTime=i.performance.now(),i.NYM.analytics.firstAdLoadLabel=e.data.label)}),n=_(o),Promise.all(b).then(function(){n?window.apstag&&window.apstag.cleared?window.apstag.fetchBids({slots:[n],timeout:window.apstag.timeout},function(){u.cmd.push(function(){window.apstag.setDisplayBids(),u.pubads().refresh([t],{changeCorrelator:!1})})}):y&&u.pubads().refresh([t],{changeCorrelator:!1}):u.pubads().refresh([t],{changeCorrelator:!1})}),e.slot=t,e)},n=function(e){var a,i,o,n=t(),s=e.getAttribute("data-name"),r=e.getAttribute("data-sizes"),d=e.getAttribute("data-label"),c=e.getAttribute("data-site");n=e.id,r&&r.length?(r=r.split(","),a=[],_map(r,function(e){e=e.split("x"),i=parseInt(e[0]),o=parseInt(e[1]),a.push([i,o])})):(e.classList.add("oop"),a=!1),this.data={id:n,name:s,sizes:a,loaded:!1,label:d,site:c},g[n]=this},r=function(e){u.cmd.push(function(){var t=o(e);g[e.data.id]=t})},s=function(e){var t=[];e.slot?(t=_(e))&&window.apstag&&window.apstag.cleared&&window.apstag.fetchBids({slots:[t],timeout:window.apstag.timeout},function(){u.cmd.push(function(){window.apstag.setDisplayBids(),u.pubads().refresh([e.slot],{changeCorrelator:!1})})}):e&&r(e)},u.cmd.push(function(){var e,t,o,n=page.getMeta("article:tag"),s=page.getMeta("author"),r=i.location.href,d=(e=a.head.querySelector(".head-gtm"),t=a.body.querySelector(".gtm"),e&&"top"===e.getAttribute("data-gtm")?"gtmtop":t&&"bottom"===t.getAttribute("data-gtm")?"gtmbottom":"");o=[],_forEach([n,s,d],function(e){_forEach(e.split(","),function(e){(e=e.trim().toLowerCase().replace(/\s/g,"-").replace(/\'|\’/g,"")).length&&o.push(e)})}),u.pubads().setTargeting("kw",o),u.pubads().setTargeting("entry_group",o),r=r.slice(r.lastIndexOf("/")+1),u.pubads().setTargeting("pn",r),u.companionAds().setRefreshUnfilledSlots(!0),u.pubads().enableAsyncRendering(),u.enableServices()}),this.load=r,this.create=function(e){return new n(e)},this.refresh=function(e){var t;_isString(e)?(t=this.getById(e),s(t)):s(e)},this.remove=function(e){var t=e.data.id;a.getElementById(t).innerHTML=""},this.getAdCount=function(e){var t,a=0,i=Object.keys(g);return _each(i,function(i){(t=g[i]).data.loaded&&t.data.label===e&&a++}),a},this.getById=function(e){return g[e]},d=_debounce(function(){var e={TopLeaderboard:1,RightColTopMPU:2,outOfPage:99,"homepageTakeover/TopLeaderboard":1},t=_sortBy(h,function(t){return e[t.data.label]||10});_forEach(t,function(e){return e.data.sizes?r(e):i.setTimeout(function(){r(e)},2e3)}),y&&window.PQ.cmd.push(()=>{try{window.PQ.loadSignals(["ids","bsc","vlp"],T)}catch(e){T(),console.error(`There has been an error loading Double Verify signals: ${e}`)}}),h=[]},10),this.addToPageLoadQueue=function(e){h.push(e),d()});function _(e){var t,a=e.sizes;return a=_intersectionWith(a,[[970,250],[970,90],[728,90],[300,600],[300,250],[320,100],[320,50]],_isEqual),e.sizes&&e.sizes.length&&(t={slotID:e.id,sizes:a,slotName:e.label}),t}function T(){i.clearTimeout(c),w=!0,_forEach(v,function(e){e()})}}]);
}, {"107":107,"114":114,"118":118,"124":124,"182":182,"205":205,"268":268,"274":274,"408":408,"409":409}];
window.modules["cid.legacy"] = [function(require,module,exports){"use strict";DS.service("$cid",function(){var r=Math.floor(100*Math.random());return function(){return"cid-"+ ++r}});
}, {}];
window.modules["client.legacy"] = [function(require,module,exports){"use strict";require("cid.legacy"),require("ads.legacy"),require("facebook.legacy"),require("aaa-module-mounting.legacy");
}, {"cid.legacy":"cid.legacy","aaa-module-mounting.legacy":"aaa-module-mounting.legacy","ads.legacy":"ads.legacy","facebook.legacy":"facebook.legacy"}];
window.modules["facebook.legacy"] = [function(require,module,exports){"use strict";DS.service("facebook",[function(){this.fb=function(i){window.FB&&window.FB[i].apply(this,Array.prototype.slice.call(arguments,1))}}]);
}, {}];
require=(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o typeof key === 'string' && key.match(/\.legacy$/)).forEach(key => window.require(key));
}
function tryToMount(fn, el, name) {
try {
fn(el); // init the controller
} catch (e) {
const elementTag = el.outerHTML.slice(0, el.outerHTML.indexOf(el.innerHTML));
console.error(`Error initializing controller for "${name}" on "${elementTag}"`, e);
}
}
/**
* mount client.js component controllers
*/
function mountComponentModules() {
Object.keys(window.modules).filter(key => typeof key === 'string' && key.match(/\.client$/)).forEach(key => {
let controllerFn = window.require(key);
if (typeof controllerFn === 'function') {
const name = key.replace('.client', ''),
instancesSelector = `[data-uri*="_components/${name}/"]`,
defaultSelector = `[data-uri$="_components${name}"]`,
instances = document.querySelectorAll(instancesSelector),
defaults = document.querySelectorAll(defaultSelector);
for (let el of instances) {
tryToMount(controllerFn, el, name);
}
for (let el of defaults) {
tryToMount(controllerFn, el, name);
}
}
});
}
// Make sure that a `window.process.env.NODE_ENV` is available in the client for any dependencies,
// services, or components that could require it
// note: the `` value is swapped for the actual environment variable in /lib/cmd/compile/scripts.js
window.process = window.process || {};
window.process.env = window.process.env || {};
if (!window.process.env.NODE_ENV) {
window.process.env.NODE_ENV = '';
}
// note: legacy controllers that require legacy services (e.g. dollar-slice) must
// wait for DOMContentLoaded to initialize themselves, as the files themselves must be mounted first
mountLegacyServices();
mountComponentModules();
// ]]