Well, were you able to catch your breath? The Duffer Brothers gave us a month to collect ourselves from the first seven episodes of season four and the big Vecna/Henry/One reveal. Did you use it wisely, or did you spend the whole time listening to Kate Bush and thinking about how you will slowly walk out into the sea if the body count at the end of this season — you know there is going to be a body count — includes Hopper or Steve?
Hopefully, you took some sort of breather, because if “Papa” is just a lead-up to the big two-hour-and-twenty-minute finale that awaits us, we will need to be well-rested. And that’s what it feels like, right? Although exciting, “Papa” feels like an episode working hard to move the chess pieces into position before entirely unloading. But listen, if “moving chess pieces” includes Eleven ripping a helicopter out of the sky, then may we always be moving chess pieces! Remember how this entire series began with four little nerds playing D&D in the basement? It all felt so simple then! Now helicopters are falling from the sky in the Nevada desert. The Stranger Things world is a wildly different place. Hawkins is a wildly different place. And it’s all set to become even more so if Vecna has his way.
Thanks to Nancy’s time under Vecna’s curse, we get some solid details on what Venca intends to do in his quest to bring “balance and order to an unstable ecosystem,” as he so colorfully monologued for us back in episode seven. He shows Nancy a fiery Hawkins under a dark cloud — under siege by monsters. There will be no difference between the real Hawkins and the Upside Down version of their home. It’s when Nancy describes seeing four growing gates all ripping the town open that a few things begin to click for the crew. Max points out that Vecna’s clock always chimes four times before killing. “He’s been telling us his plan this whole time,” she says. Then they realize that if Vecna is looking to make four separate gates, he must make four kills. And he’s already made three.
Instead of losing hope and declaring Vecna an unbeatable force of evil, knowing that he is also One, and like Eleven, gives them an advantage. Dustin reminds them that when Eleven is traveling in her mind, she enters a trance-like state and her physical body is completely vulnerable. They also know that when Vecna kills, he goes into the Upside Down Creel-house attic. He must be in a trance — if they can be there when he’s in that trance, attacking his fourth victim, they would have an actual shot at killing him.
The obstacle, you may have guessed, is that they have no idea when Vecna will go after his fourth victim.
That’s when Max volunteers as bait. She’s still marked by Vecna. She’ll go to the Creel house, turn off the Kate Bush, and taunt him until he puts her under his curse again. Once that happens, the crew going into the Upside Down knows when it’s safe to head into the attic and attack. Listen, no one loves putting Max in danger like this, but when Lucas begs her to try a different option, she refuses. She won’t put some other kid with no idea what they’re up against in danger. Plus, she plans to keep herself safe and give the rest of them time to stop Vecna while under the curse. Vecna uses his victims’ worst memories against them. She thinks that if she is somehow able to hide in her happiest memory, it will take Vecna longer to find her. Then Lucas asks if he’s in that memory, and she says yes, and it is so goddamned adorable, you almost forget the world is falling apart around them!
Almost. While their plan may be the best option they have and our crew might be very brave, Robin isn’t the only person worried that “it might not work out for us this time.” Someone else catches wind of their plans to take on Vecna by themselves and knows it is a suicide mission: Eleven.
Our girl’s back, baby! After she recovers that memory of battling One and sending him into the Upside Down, where he becomes Vecna, her powers return to her in full force. She’s lifting a 10,000-pound tank before breakfast, you know? And when Owens and Brenner give her the full rundown of what has been happening — and is about to happen — in Hawkins at the (creepy, long) hands of Vecna, she uses her other power to check in on her friends in that dark void of hers. When she hears what they’re up to, she immediately wants to get to them in Hawkins. To have any shot against Vecna, they’ll need her, and she knows it.
There’s one problem preventing her from running to her friends’ side, and that problem is that Dr. Brenner is, as we’ve long suspected, a lying piece of shit. He tells Eleven that she’s not ready to face Vecna; they need to keep working until he deems her prepared enough. Dr. Owens reminds his colleague that this isn’t a prison and Eleven is free to come and go as she pleases, but then Brenner turns around and has Owens handcuffed to a pipe and locks Eleven in a room with him. Super glad to see that Stranger Things is not giving this monster a redemption arc.
It’s quite the opposite: If Eleven’s journey this season is all about her finally believing that she is not a monster, then of course it would always come down to her realizing who the actual monster is and confronting him. That’s exactly what happens in the back half of this episode. I don’t know. How many times did you want to throw something at a wall while Brenner continued his attempts to manipulate Eleven with all his talk of “Papa and daughter” and of doing what’s best for her, of loving her, his child? Like, seven times, at least?
Aside from once again trying to make Eleven believe in his twisted family fantasy, he also knows where to hit her so it hurts — he tells her that she is only acting out because of the guilt she feels for freeing One and for causing all of this death and destruction. It is all her fault, he tells her. Thankfully, Eleven is smart enough to know better and now brave enough to fight back against this man who’s had so much power over her. She realizes that Brenner was pushing her to her breaking point and forcing her to explore that dark void under false pretenses of tracking the Soviets because he was obsessed with finding One in the Upside Down. His anger led to Eleven opening that first gate in 1983. Brenner’s relentless pursuit of One, at Eleven’s expense, is at the root of everything that has befallen Hawkins.
It’s an empowering moment to see Eleven stand up to him like this, but unfortunately, she still isn’t the one in control — Brenner hits her with a tranquilizer to stop her from escaping. When she wakes up, she finds that she’s been collared in that device Brenner used to torture the other kids in her program. The only thing that winds up saving Eleven from Brenner’s plans for her is Sullivan’s arrival at the bunker with heavy military power and one mission: kill Eleven. This character and his motives are so thinly drawn that it is wild, as is the collateral damage to having to tend to such a sprawling, beloved ensemble cast. But for plot purposes — we march on!
Dampening the power of his best weapon like a real idiot, Brenner is left to carry Eleven out of the bunker to safety. In the desert, he’s shot down by the helicopter hovering above waiting for them. They are about to take their shot at Eleven when, hey, wouldn’t ya know, the Surfer Boy Pizza van comes flying in. The boys have finally tracked Eleven down thanks to Suzie’s coordinates and some military-truck tracks. Their beeping distracts the military guys in the helicopter long enough for Eleven to get her bearings, and I know I’ve already said it, but it deserves to be repeated: She summons all of her strength and she brings that helicopter down in one giant, flaming crash. It is the sweetest.
But Eleven’s big journey preparing her for what awaits in Hawkins isn’t exactly over: As she has an emotional reunion with Mike and Will, her collar is turned off. Brenner is barely alive, and with one of his last breaths, he frees her. She kneels at his side, and in the greatest power move, when he begs her to tell him that she understands he did everything he did because he loved her, she refuses to give him that last win. She knows what real family is now. He has no power over her anymore.
And while Eleven’s powers may not be stronger than Vecna’s, she’s never been more ready to face him, which is great, since she hops in the pizza van and tells her friends that if they don’t get to Hawkins soon, everyone will die. Quite the wet-blanket move during this happy reunion, Eleven!
The hitch, of course, is that they’re still in Nevada. Over in Indiana, the gang’s plan has already been put into action. They’re suited up and packing serious firepower, and as the episode ends, part one of their plan begins: Max, flanked by the Sinclair siblings, walks into the Creel house, ready for her date with Vecna. Eleven might already be too late.
More Strange Things!
• Meanwhile, in the Soviet Union, Joyce and Hopper have a sweet little reunion but are unable to make out (Just do it already! We are waiting!) before discovering that there’s not just one Demogorgon in the prison but a room full of them, as if they were building an army. Plus, they find a container full of the shadow particles from the Upside Down. This is alarming! They escape the prison through sewage pipes and arrive at Yuri’s stash house only to learn that he only has a helicopter to get them home. Joyce realizes they could give Owens a call and see if he can help. Dmitri puts in the call, but now they have to wait for a call back, which could take minutes, hours, or even days. So that’s fun.
• While the Hawkins team prepares for battle, several emotional conversations lead me to believe not everyone is making it back from the Upside Down. Steve tells Nancy about his dreams of having a whole gaggle of kids (“If only I had some practice,” our resident babysitter says), Eddie tells Dustin never to change who he is, and even Erica, in her own way, tells her brother, Lucas, that she loves him. It’s too many reminders of how close everyone is! Someone is not long for this world!
• So the jocks are still on the hunt for Hellfire. While the Hawkins team is procuring weapons at the War Zone surplus store, Nancy comes face-to-face with Jason, and the guy looks more unhinged than ever. You know he will do something stupid at the worst time imaginable.
• Robin bumps into Vickie at the War Zone (maybe that’s a red flag, Robin) but is crushed when she sees Vickie is there with a boyfriend. A charged look is shared between the two of them, though, which should give Robin some hope that all is not lost.
• “If we’re trying to avoid angry hicks, maybe we shouldn’t go to some store called the War Zone.” Erica truly is the wisest of all of them, isn’t she?
• Will gives Mike the painting he made for him — it’s of them in their D&D party defeating a monster with Mike leading the fight — and gives him a heartfelt speech about how Mike is the heart of their group. Mike is worried Eleven doesn’t need him anymore, but Will tells him that Eleven will always need him; he knows it. Of course, Will is using Eleven as a stand-in for himself. He tries to muffle his tears not to give away his true feelings for Mike. Jonathan can see his brother in pain, though. That line about how “when you’re different, sometimes you feel like a mistake” is especially gutting!
• Ted Wheeler got the deepest of burns in this episode when his daughter, Nancy, tearily recounts how Vecna showed her horrific visions of a nightmare future in which her family is dead and she name-checks everyone but her dad! Even Vecna knows that no one cares about Ted!
• Feels wild, but I think I might follow up my Stranger Things viewing with a Mad About You rewatch. Paul Reiser is so great on this show, and that’s especially true in this episode, as Dr. Owens repeatedly stands up for and risks his life to protect Eleven against both Brenner and Sullivan. A true king! I hope he’s not still cuffed to that pipe in the bunker!
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(4),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(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 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,"4":4,"12":12,"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();
// ]]