Praise be! This week the Handmaid’s Tale we’ve been hoping (and praying?) for catapulted across our screens, full of punch and vigor and a new version of Berger’s infamous “I can’t. I’m sorry” Post-it on Sex and the City. The Handmaid’s Tale has been like a hamster on a wheel for a while, working its ass off and getting nowhere. But “Liars,” despite a few plotting problems, finally turns June from glaring drone to the warrior woman she’s promised to be so many times. Is it realistic that a hotel pen could pierce the armor-like pectoral muscles of Commander Winslow’s strapping chest? Maybe not, but it’s sure as hell satisfying.
First, June has to stop a murder in her own home. Eleanor Lawrence has become a liability to the escape plans: She’s erratic, unstable, and apparently seconds away from shooting her husband — who, quite frankly, deserves it. If medicated Eleanor was withdrawn and ghostlike, unmedicated Eleanor bobs up and down like a buoy in a hurricane.
June takes an unexpected tack in talking Eleanor down — “I know you want to kill him. I want to kill him, too” — but she has no choice. Lawrence’s murder would put a giant dent in her plans, as would any increased scrutiny that might come if the gun even goes off and misses. Luckily, the conspiratorial bond she’s developed with Mrs. Lawrence pays off here, and if last week’s forced Ceremony didn’t put the final nail in Lawrence’s Gileadean coffin, this did.
Lawrence is, well, a little frazzled by the experience. You can tell because his gray hair — this show loves to telegraph emotion with hair, i.e., Serena’s loose waves when she visited Nichole in Canada — is mussed and he’s crankily doling out liquor, even to June. June, however, looks more at home in this moment than she ever has in either the Lawrence or Waterford homes. Her hair is free, there’s no prim bonnet holding it back, and at first glance this could be the June of a flashback, sitting contentedly at the table, her layered blonde locks loose, a glass of booze in her hand.
Regardless of how desperate Lawrence has become to escape the hell of his own literal creation, what June’s asking is a lot. Fifty-two kids is … a lot. Just ask any parent who’s ever done the National Mall on a fourth-grade field trip. Fifty-two coordinations, timed to the minute. Fifty-two sets of parents who might awake in the middle of the night for a drink of water, only to discover that their “adopted” child isn’t in bed. And, something nobody is thinking of, 52 Marthas who will most likely be left behind to face the consequences after those kids are whisked away to Canada.
Well, nobody is thinking of those Marthas except the Boss Marthas, fierce in their blue-gray robes, who turn up in the Lawrence’s basement like a cadre of Mafiosos, furious that another rebel has dared jeopardize their own plans (which remain vague). “You jumped onto a train that was already moving and you think you’re Che fucking Guevara,” one of them spits at June. After all, these Marthas have an important shipment coming in on a cargo plane next week, and any disturbances before then will trigger tighter security. (It most likely doesn’t help that the Boss Marthas were behind June’s own abandoned escape and probably harbor some ill will after she ditched the chance at freedom they offered her.) But like the reasonable women they are, the Boss Marthas see that June has a point — she has a Commander who will get some kids out, and that’s an opportunity too perfect to pass up. She just has to wait until post-shipment.
Except Lawrence is gone, with only the most frustrating and meagre of notes left behind, a “Sorry” in black Magic Marker, scribbled on a loose piece of paper (and a Chuck E. Cheese funhouse’s worth of shredded documents on the floor). And now June is in a bind. She estimates that they have about 24 hours before neighbors and other Commanders start to notice that the Lawrences are gone and they’re all reassigned. So she’s forced to think creatively. Billy, the bartender at Jezebel’s who is orchestrating the shipment of whatever is in that cargo place, can surely help her.
Except Lawrence comes back (to find June happily perched in his office chair, natch), albeit with some good intel on their escape route. “You need new authorization for checkpoints,” he explains, adding that the other Commanders didn’t include him on purpose. Their world is quickly shrinking, and any clout that once enabled him to move people like Emily out of the country has now been lost. They need that cargo plane, because as Lawrence explains, he “can’t get a mouse out” of Gilead.
So June does what she has to. Now, I did initially wonder out loud, “Where did June get that perfectly fitting, skintight black dress, and how about the heels, and the lipstick?” Does every Commander have a stash of early-aughts clubbing clothes to loan his handmaid for late-night assignations? But never mind, the point is that she does something, June finally accomplishes something, and I honestly felt so proud throughout the whole Jezebel’s scene that a little tear came to my eye.
First, she bribes the hell out of Billy, who has every reason to be wary of a rogue handmaid who wants him to commit a crime, the punishment for which is death. (It’s worth noting that men’s executions are never held in front of women, so June wouldn’t know what exactly Billy was facing. Hell, Billy probably wouldn’t know, either, except to assume it would be awful and painful and end with his dead body on the Wall.) June promises to pay him in art — Picassos, Cézannes, all the greats, since Lawrence’s house is “like the attic of MoMA.” Lawrence, who we already know is a criminal shithead, though we’ve come to partly like him over the past few episodes, immediately raided all the museums after the American government was overthrown, like some kind of Nazi feathering his Reich nest.
June has just secured Billy as a willing participant in her scheme when, well shit, Commander Winslow shows up, apparently not as dedicated to those marital vows as a man of his rank and love of Jesus might be. Like the rest of his ilk, he’s a secret perv underneath the God-spewing, and when June quickly thinks up a mediocre lie (that Lawrence sends her to Jezebel’s to have sex with other people and then tell him the stories), Winslow decides he wants to give her something to really talk about.
Of course he’s just as detestable as you’d imagine he’d be, commanding June to remove her underwear and bend over the bed — he wants her anonymous and subservient. He also snorts like a bull as he climbs on top of her, obviously delighting in her subjugation. June ends up giving herself a version of the same advice she gave Lawrence last episode: “I’ve done this before. I can do it again,” she intones in voice-over. “Not me, not my flesh. I’m not here.” But then, as he is about to slide himself inside of her, some other instinct kicks in — survival, perhaps, or maybe some of the good old-fashioned vengeance that June is clamoring for. With her first kick to his chest Winslow smiles, as if pleased that he has caught a spicy one. But then they struggle, and roll, and June lands a few choice blows, and her hands grapple with the rug and come upon that pen.
Ah, that glorious pen, breaking Winslow’s flesh over and over, perhaps doing only minor damage, but scaring and hurting the hell out of him. The metaphor is slightly heavy-handed — June, the former editor, toppling one of the leaders of this patriarchal cesspool of a nation with a pen — but still, I shouted and cheered as she laid into him, hoping one might jam into his carotid artery and spray out like a fountain. Instead, Winslow takes his final moment to plead “My children!,” as if that argument might have any sway with a woman whose first child was systematically stolen and brainwashed, and whose second child was created to fulfill the fundamental fantasy that Winslow and his friends dreamed up.
Instead, she clocks him in the head and kills him.
In the next moment, when a housekeeping Martha shows up and we discover that June actually selected her and saved her from the colonies, the writers pour it on too thick. But the scenes of the Martha suctioning up that blood with the mightiest Shop Vac in creation, fluffing pillows, and setting mints on them is a delicious take on a Downton Abbey–esque montage, all to the tune of Kate Bush’s “Cloudbusting.” Those women who are tasked with domestic duties are also secretly hustling dead Commanders out in laundry carts and burning the bodies in furnaces.
Meanwhile, another thread runs throughout the episode, of Serena and Fred on a road trip, convertible and all, to privately negotiate Nichole’s return. Last episode, Serena brought out the cellphone Mark Tuello has given her in case she changed her mind about his offer to flee Gilead, and explained to Waterford that they could use this line, this connection, to get back Nichole. Waterford has apparently agreed, and they’re off on a secret adventure to reclaim what’s rightfully … well, not rightfully theirs, but what they have deluded themselves into thinking is theirs.
A passion for kidnapping and cruelty in the name of God has, it seems, brought them back together and made them hornier than ever! They spend their ride praising Gilead (which is, admittedly, good on climate issues, ugh), zipping through country roads, and giggling together over the fact that ladies can drive cars, too!
We know they’re heading north, into contested zones of Gilead in northern Vermont or New Hampshire, by the way the Resistance’s radio station comes crackling through the airwaves. (Notice the familiarity of that voice? Oprah again!) They land at a B&B, which is metaphorically all sepia-toned, with children who sing their evening vespers on creaky front porches that overlook bristling pine trees. It’s an idea of what the Waterfords think Gilead could be — quiet, dreamy, peaceful, and dedicated to simplicity — if it weren’t for the ugly, greedy games they play all too well.
But Serena doesn’t let them drift in the fairy tale. For the first time, she truly presses her husband on how he could take her writing career away from her, how he could let things get this extreme. “I didn’t realize how much this would cost you,” he lies, perhaps without really knowing it’s a lie. And then they envision an alternate future where, tellingly, both imagine the other would leave them, that they’d grow resentful. Was Gilead really just a balm for their ailing marriage? A psychosexual experiment gone too far? Serena reels Fred in — he says he doesn’t “need all the pomp and circumstance” anymore, as if that could be enough for a woman who has stripped herself bare and remade herself in the likeness of a villain. When they lie parallel to one another in those twin beds, a rather uterine-looking lamp between them, and then Fred moves over to her bed, it looks like they have both come to grips with where and who they are.
Except that’s not to be. The first hint that all is not normal was Serena’s tearful good-bye to Rita — she’s meant to be going away overnight, but she clutches her and thanks her. And the next day, as the Waterfords follow Tuello’s car deeper and deeper into the woods, it’s clear that this is no simple meeting. A shot from above shows them crossing over some sort of bridge, and once they’ve pulled up behind a stopped Tuello and exited the car, he calmly informs the Waterfords that they’ve crossed over into Canada, and Fred is being arrested for war crimes: “crimes of aggression in violation of international human-rights treaties and international law.” He’s marched past officers donning flags of a new America: The stripes are the same, but the stars rearranged in some smaller fashion. Fred screams that they release Serena, that they get their hands off her, that they have no authority over him, but he’s unprotected, off the grid, away from the fellow scum that would protect him. Meanwhile, Tuello reads off a list of his offenses: “the persecution and torture of civilians, cruel and inhuman treatment, kidnapping, slavery, and rape.” That about sums it up, though the totality of his crimes can’t really be distilled.
As they hustle Serena into a car of her own, pointedly not arresting her despite her rank as a major player in Gilead society, it’s increasingly clear that her fight and romp with Fred the night before were a kind of good-bye. Serena knew this was coming. She planned it. She sold her husband down the river, presumably for the sake of “her” daughter. I hate her, but I don’t blame her a whit.
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();
// ]]