We have to wait until next season to find out who the duke is? (Editor’s note: Sorry, but Starz canceled season two.) FINE, Dangerous Liaisons, have it your way, but the part of me that loves instant gratification (it is the main part) is displeased. Two-thirds of this episode was over-the-top, fantastic gothic nonsense that I loved, and then the other third was like watching a raw egg fall and go “squelch” on the ground (yes, I recently watched the Abbott Elementaryepisode with the egg drop).
So much happened this week that I don’t know how we will discuss it all, but let’s try. When we last saw Camille, she was newly married to the marquis and seemingly in mortal peril from the much-discussed duke. Then the marquis happened upon Victoire, and that’s all we knew. Until now! Camille wakes up unharmed, but the house is completely changed. Everything is draped in sheets, the chandeliers are on the ground for dusting (I think? I’m not a chandelier scientist), and the marquis is nowhere to be found. Camille finds Majordome, who says Camille and the marquis are leaving for St. Domingue immediately. This is bonkers! You can’t shut up an entire massive house and pack for overseas in one evening! I know he has a lot of servants, but good lord.
Camille can’t go to St. Domingue because she has to go to the opera. I love recapping shows where I get to write sentences like this. This is Chevalier’s new opera based on the story Camille told him about her time with the Montrachets. There are multiple points of high drama, and the opera is one of them, but is it the MOST drama? Up for debate.
Because Camille has to get the hell out of there, she runs back to her room to change, but she sees Victoire’s cloak! Victoire was there! Now she knows. This is when I, the audience, realized the marquis took Victoire instead of Camille for the whole weird Ariadne thing, and I said “OH NO, VICTOIRE,” because Victoire is the best and deserves the most. Camille fortunately also knows this when she’s not consumed by vengeance, so she starts searching the house for her most excellent best friend. Victoire is nowhere … until (!!!) Camille rests a moment in the chapel, and we are suddenly in a classique Ann Radcliffe novel because a breeze is blowing behind a tapestry and there is a secret passageway. Camille really has Nancy Drew levels of bravery here, and she just goes for it into this mysterious dark tunnel to save her friend.
The tunnel leads into a massive underground chamber with tons of arches and a lantern (of course). Camille carries the lantern like a lady in a gothic novel through the gloomy, arch-ridden crypt. She finds a red thread (ah!) and follows it to some creepy cellar doors. The marquis appears and tries to stop her, but Camille enters the cellar and finds Victoire! Hurray for friendship!
Okay, so this scene is already the most. We’ve got the abducted friend, the sinister husband, the hidden crypt, and the lady with the lantern, but we are not done. The marquis tries to stop Camille from rescuing Victoire, saying to leave her and he’ll get her a new girl because Victoire is nothing. Camille says, “She is everything,” and pulls a ROPE around his neck! Drama!!!!! But the marquis gets out of it, grabs Camille by the throat, and starts screaming at her when, who should arrive, but Majordome, who smashes a lantern into the marquis’s head, after which Camille finishes strangling him! Ahh!! I loved this whole scene — ten out of ten for gothic drama.
And we FINALLY learn why Majordome’s name is a job title! When he was brought to the Merteuil house twenty years earlier, the marquis “took [his] name.” It’s Etienne! This low-key bothered me so much, and I’m happy he has a real name now!
So the marquis is dead, and Camille and Victoire have an amazing best-friends chat by the fire. Camille thinks they can now stay together, but Victoire plans to go to the New World and discover who she can be without Camille. Ugh, I haven’t said it enough; I love Victoire. She helps Camille get dressed “for [her] battle” (the opera) as a final act of friendship and asks Etienne to watch out for Camille. He does this by staging the marquis’s body to make it look like he was run over by a carriage while drunk. Fantastic work, sir. Except for the ligature mark, but we can talk about that later.
I know, you’re like, Wait, but didn’t we leave Valmont being brutally beaten and dragged off to parts unknown after trying to re-abduct Camille’s child, Odette, from the Montrachets? Yes, we did, but he is less interesting than Camille, so he had to wait. He’s being held somewhere on the Montrachet estate, and when Jacqueline visits him, he tells her he has a cunning plan. This is for her to write down everything her husband did; then Valmont will escape and meet her at the opera, but not until telling her husband that he’ll read the letter to the audience if Montrachet doesn’t let them escape. Sure. A fine plan indeed.
Jacqueline writes the letter and hands it to Valmont’s servant boy Azolan, so now they have it. The letter Camille wanted. But the letter also reveals that Odette is alive but unreachable (oh yeah, Montrachet sent her away, presumably to a convent). So will the letter be overall helpful or hurtful to Camille? Valmont is unclear, as am I.
But it’s time, we’re at the opera. Okay, I am not a screenwriter, so I’m sure there were reasons here, but I am disappointed we did not end the season on this batshit Hamlet opera scene. It could ONLY go downhill from here, and it does. This scene, plus the gothic passage, makes it a 10/10. Everything after this knocks it down to 5/10. If that sounds harsh, imagine the depths of my disappointment.
The Chevalier tees the opera up by saying everything in the opera is true, and everyone you see in the opera is here tonight. I would DIE; I’d be so excited. Also, the queen is there, so what a moment. The plot very tightly follows Camille coming to the Montrachet household, being called a daughter by Jacqueline, and meeting the husband. Jacqueline is in the audience with a box opposite Camille (!!!!), who is staring at her because of course she is. Jacqueline does not recognize Camille for a long time, but she quickly realizes what’s up onstage. At the “Even God does not forgive” line, the whole cast points, and they are pointing AT JACQUELINE!!! Everyone in the theater is silent!!! Oh my God! Madam, how like you this play, amirite? (I had to look up an appropriate Hamlet quote.)
Jacqueline recognizes Camille, and you think everyone is going to start booing Jacqueline when a man stands up and shouts at the composer for exalting a peasant and condemning the nobility. The audience yells “shame!” at the Chevalier. It’s kind of amazing. “Wow, that feels like a reach,” you might say, but do you know what the eighteenth-century critics said about the novel Pamela? It’s about a servant girl whose employer repeatedly tries to rape and/or harass her, and when she successfully fends him off, he marries her. Contemporary critics were mad about the novel because they thought it might encourage their sons to marry their servants. So, y’know. This tracks for me.
Camille and Jacqueline both leave, with Camille stopping her in the foyer, and they finally have it out. Sort of. Camille tells Jacqueline to her face that she abandoned Camille despite knowing what her husband had done. Jacqueline tells Camille she couldn’t go against him, which Camille corrects, saying Jacqueline chose not to. Yes! Accurate! Then some absolute bullshit happens where Jacqueline says if she could go back and change it, she would, and Camille basically calls her bluff immediately, saying, Okay, go tell the people in the audience that was all true. And Jacqueline’s like, Ohhhh, well I have to leave because I am in love and we’re running away together. I hope you find someone for yourself. Wowwwwwwwww, Jacqueline, wow. This is grade-A asshole behavior.
So Camille says, Oh, someone like Lucien? BOOM. And it all comes out. Lucien isn’t real, he’s been playing Jacqueline this whole time (partly true), and this was all to get a letter from Jacqueline. Camille says, Tell your husband the higher he rises, the higher I will climb until I bring him down. Until he suffers as I suffer. Jacqueline, who has probably absorbed as much as she can for an evening but still has more to go, asks when it ends, to which Camille replies, “It doesn’t.” This is some walking away from a massive explosion energy, Camille. I’m a fan.
This was all a lot, right? Would have been great if when Camille says, “It doesn’t,” we zero in on her face, and bam, blackout. End of season. Sounds great. But no! We have so much time left! Because I’m mad about it, here are the main points: Camille gives away her jewelry to the sex workers outside the opera. It’s a nice moment, but her awkward curtsy makes it weird. The busty maid at Jericho’s takes the blackmail letters and leaves for good; we don’t know where she goes. Jacqueline’s husband is angry and has Jacqueline committed. Camille and Valmont are back together and so happy, and I have never seen these two as belonging together in the original or here, so I am not into it.
Then the bonus ending happens, and I hate it. Gabriel (remember Gabriel?) sees the marquis’s body and notices a giant and obvious ligature mark around his neck. Because Gabriel is a clever and wily detective, he realizes carriage accidents don’t leave ligature marks. When he goes to Camille’s, he finds rope burns on her hands, but he also realizes Camille is alive after all this time of him being creepy around what he thought was her dead body. Maybe this is the actor’s fault, or maybe I just really wanted a literal operatic ending, but I 100 percent cannot buy what follows. Gabriel tells Camille he bought her, so she’s his, which is only a tiny bit good because it reminds me of when that guy said he owned Jenna Maroney because he had collected enough Surge points. When Camille replies that she could never love Gabriel, his solution is that she can’t be with anyone, but especially Valmont, and when she finally knows what it is to be alone, she’ll love Gabriel.
Despite his astonishing carriage realization, I know we’re not supposed to think Gabriel is super on the ball, but this is so stupid. He forces Camille to write a letter to Valmont telling him she never loved him and this was all a game, or he’ll tell everyone she murdered her husband. Okay. So now Valmont is mad at her, and they’re “at war.” End of season.
I JUST CAN’T. It was going so well! The crypt! The opera! And not to be that guy, but Camille is a marquise, and Gabriel is some guy who basically just told her no one cares about him. Have him murdered, Camille! Write Valmont the letter, then meet up and say, Hey, that was all lies, can you have this guy murdered? Or, and I don’t want to put more on Etienne’s plate, but have Etienne do it! Sure, the strangulation thing was discovered, but he still managed to move a body and stage a pretty good accidental death for the eighteenth century. Literally, no one will miss Gabriel. This is such an easy fix, and I resent having to be the one to say it when I don’t even have a peerage at stake or whatever they are in France.
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()}});
}, {"3":3,"6":6,"17":17,"35":35,"40":40}];
window.modules["global-nav.client"] = [function(require,module,exports){"use strict";const dom=require(4),auth=require(17),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(3),appendLandingPageParams=require(135),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 i=t.querySelector(".dropdown");!n||t.contains(e.target)&&27!==e.keyCode||i.classList.remove("open")})}function gtmSendReport(e,n,t){let i={eventCategory:"ecommerce",eventAction:"componentClick",brand:e,dimension23:"global-nav",list:pageUri,pageZone:"header",variant:"nav-link"};"global-nav-link"===t&&(i.eventLabel=n.href),gtm.reportNow(i)}function updateElementTargetUrlsIfQueryStrings(e){if(searchString){const n=new URLSearchParams(searchString);let t=e.href;if(t.includes("?")){const i=t.split("?"),o=new URLSearchParams(i[1]);for(let e of n.entries())o.set(e[0],e[1]);t=`${i[0]}?${o.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()||auth.isMobileAppRequest())&&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;
}, {"3":3,"4":4,"17":17,"124":124,"135":135}];
window.modules["aaa-module-mounting.legacy"] = [function(require,module,exports){"use strict";const _pickBy=require(221),_each=require(406),Fingerprint2=require(408),DS=require(407),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(406),_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,"406":406,"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","ads.legacy":"ads.legacy","facebook.legacy":"facebook.legacy","aaa-module-mounting.legacy":"aaa-module-mounting.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();
// ]]