After ending the first pair of episodes with a woman’s insides exploding out of her and a seemingly possessed child warning that everybody needed to run and hide, episode three begins with … everyone walking up from a peaceful night’s sleep in the warm glow of a quiet dawn’s early light. I get the narrative convenience of just skipping ahead rather than having to depict the chaotic, screaming fallout of last week’s conclusion, but slamming the breaks on the momentum this hard so that everybody has time to calmly talk about their personal drama over a cup of coffee seems unrealistic. You people are trapped, and if you try to leave, your guts will go kablooey, but, sure, get those eight hours of shut-eye!
To Teacup’s credit, it does toss in a bunch of new developments in this pair of episodes that lead me to believe it will be able to fill out the back half of the series’ run. And it’s not that the relationship drama between characters is “filler,” a horribly mis- and overused word. We’re getting to know our characters; James and Valeria’s affair is a fun bomb that’s going off in slow motion. I am just having trouble buying these conversations happening with this level of normalcy in these circumstances — it feels like the show is abruptly shifting gears.
In any case, Maggie and James wake up cozy in their bed, Maggie having been presumably informed about Claire’s death because she didn’t witness it firsthand. (What was that conversation like?) Meryl has also been informed about what happened, though somehow, the thing she really wants to talk to her mom about is the crush she’s developing on Nicholas. I know teen hormones are a lot, but girl, there are dead bodies! In the kitchen, Maggie reveals to James that she knows he was having an affair with Valeria. Having this conversation here, now, was a bad idea, and not just because of the horrors but because Ruben was right around the corner listening to the whole thing. Even Ellen heard enough to get the gist of it.
While Maggie goes to bring Donald inside from where he’s been staring at his wife’s grotesque corpse in shell-shocked vigil, Ruben and James saddle up to go inspect the perimeter of their trap. Seeing as Ruben has just discovered James is fucking his wife, this seems like a bad pairing. In the woods, they find a rattlesnake neatly bisected by the line, prompting them to wonder if the masked man created the barrier or just identified it for them. Ruben also ominously notes that nobody would know what happened if one of them were to end up on the other side of the line. James, who I don’t think is very smart, does not seem to realize that Ruben knows everything and is contemplating killing him.
Meanwhile, Meryl and Nicholas are watching Arlo speed-read the dictionary. Vocabulary sufficiently expanded, the voice inside Arlo’s head identifies itself as Harbinger, and he (it?) tells Meryl and Nicholas that an “assassin” is coming, and they have to follow him into the woods. There is “no time” to tell any of the adults about this, so the kids just head into the woods without telling anybody — a repeat of literally two episodes ago when Arlo went off into the woods without telling anybody and it caused a huge problem. Once in the woods, Harbinger finds a crater surrounded by dead animals, and he tells Meryl and Nicholas that he came from outer space and that the crater is his, as is the rainbow goo puddled inside it. The goo is a toxin, Arlo says, and they need to drink it to survive.
Back at the ranch, Maggie is tending to Donald’s wounds as he grieves Claire and the family they never had before remembering that there’s another body — the woman from the first episode whose corpse Donald tripped on — out in the woods. Maggie goes to investigate as Ruben and James come across a neighbor’s farm. The Navarros were seemingly also trapped inside the blue border and they did not fare so well. One of them, Carmen, is the unfortunate person whose corpse Maggie finds. Carmen apparently was Harbinger’s last host before she passed him on to Arlo and got mauled to death by a dog. The rest of the family’s bodies are lying out on the Navarro ranch getting pecked by crows.
Or, maybe not all of the family. While Ruben’s walking into a silo and getting trapped, James is exploring the house. When he looks into the basement, a hand reaches out and grabs him to end episode three. Episode four won’t check back in on Ruben or James until its final moments, so I’ll just address what happens to them now because it’s honestly less interesting than the other big development episode three introduces. Ruben has found some sort of glittery rainbow tree that’s certainly connected to these aliens, and a surviving neighbor has found James. The young man looks like hell and he’s not sure if James is here to help him or to “help finish the job,” and he gives him until the time he’s done smoking a cigarette to convince him not to shoot James.
The reason why James’s captor is so suspicious is evident. You can’t trust anybody. After expertly chucking a blanket over Clarie’s body, Valeria and Ellen spend episode three sitting down by the border at the end of the driveway. A van pulls up and a guy wearing body armor gets out and strolls across the line, telling them that getting in is easy; it’s getting out is the trick.
In episode four, the man, who identifies himself as Lt. Olsen, claims he’s seen all this before and that he’s here to help, but his descriptions are frustratingly vague, and rather than actually explain what’s going on, he says, “We’ll get to that, I promise.” It’s the type of lazy writing that would be annoying if it wasn’t immediately clear that Olsen isn’t just delaying the gratification of Teacup’s mystery. He’s bullshitting, obviously.
Maggie, who comes out of the woods carrying the assault rifle Donald dropped, instantly knows something’s up. Carmen’s body had marks on her wrists from where she was cuffed. Olsen has cuffs. He’s claiming that he’s part of a task force chasing her down, and he’s asking probing questions if anybody saw her before she died. When Ellen and Valeria spill the beans about Arlo’s encounter and subsequent weird behavior, Olsen is too interested. So, Maggie leads him into the bar while he spouts more obvious BS about being a Birmingham, Alabama, cop who is also working with the Army and Marines. Perhaps the only true thing he says is that the border is a concentrated form of vibrations that breaks down complex organisms that come through it. When Maggie confronts Olsen, he begins to drop the act and tells her that the only way they’ll survive this is if she takes him to Arlo. He lunges, and she knocks him out pretty effortlessly with the butt of her gun.
Back in the woods, having collected the rainbow goo in a jar, the kids are walking back. Nicholas admits that he’s been in love with Meryl since second grade — and unlike a lot of the other big dramatic confessions in these episodes, I buy that Nicholas would bring that up at this point. He’s kind of an odd kid, and a declaration of love is the type of thing you might do if you think there’s a chance you might die.
Meryl ignores Nicholas’s reveal, which also seems like a reasonable thing to do in these circumstances. She asks Harbinger to let her talk to her brother again, and Arlo’s consciousness tag teams back in to reiterate what Harbinger told him. Harbinger is from outer space and is here on a secret mission, and the assassin made the line to trap him. Drinking too much of his rainbow goo toxin will kill them, but if they drink just the right amount, they’ll be able to cross the line without Cronenberg-ing. Before too long they encounter somebody else in the woods. It’s the masked man with the whiteboard, standing right on the other side of the line. Upon seeing them he writes that they need to roll the jar over. When they refuse, he strides over, causing a scuffle that results in the jar breaking on the ground and Nicholas accidentally stabbing him with the kitchen knife he brought along for safety. They take off his gas mask so Meryl can do some first aid, and upon seeing his face, Arlo says he recognizes him — and the man recognizes that Harbinger used to be inside Carmen. He says his name is McNabb, and that almost got Harbinger “to the car” and to safety. But then Harbinger (or perhaps Carmen) ran and he lost track of them until now.
McNabb is an ally and not the assassin, it would seem. The assassin is probably Olsen, who is tied up in the hayloft of Maggie’s barn. Valeria comes up, initially confused that Maggie has bludgeoned and restrained somebody she thought was here to help. This quickly turns into a conversation about how Maggie knows she was sleeping with James, and while on the one hand, this seems like the sort of conversation that Teacup’s characters maybe shouldn’t be prioritizing, Maggie’s burn of Valeria makes it worth it. “I thought it was because you aren’t the good person that I thought you were. But then I realized I feel bad for you because you aren’t the good person that you thought you were.” Damn!
Maggie leaves the barn to have a panic attack, and Donald talks her through it, which is nice. However, for somebody whose arm has been flayed and who spent all night looking at the Hannibal art installation that was once his wife, Donald is acting way too normal. He should not be saying things like, “Don’t wanna miss the fun. Anybody find a way out of this mess?”
The mess, as Donald casually put it, is about to get a lot worse. Valeria leaves guard duties to Ellen, a grandmother with a constant tremble in her hands from her MS. Olsen sweet-talks Ellen into getting a little closer before doing the same open-mouth silent scream that Carmen did before passing Harbinger into Arlo. The same sickly rainbow sheen goes across his eye and then hers. Ellen is now possessed by what we can probably safely assume is the assassin, and she stops her MS tremors before calmly shooting Olsen in the head and staging it to look like he got loose and she was injured.
This pair of Teacup episodes has added enough wrinkles and new elements that it seems likely that the show will have enough material to pace itself for its second half. (Assuming the characters don’t decide to get another good night’s sleep, of course.) The reveal that the threat isn’t just a spray-painted line that means “here be body horror” but also an alien who can possess anybody adds a level of paranoia that makes Teacup even more similar to The Thing. The floor is pretty high for even a cheap knockoff of The Thing, in my book. Might be a little tricky to stretch that alien paranoia for four more episodes compared to a movie whose total runtime is south of two hours but I’m not as worried as I was last week — even if the beginning of episode three had me feeling vindicated.
Over the Line
• I said last week that I was underwhelmed by the body horror of Claire’s death and while I stood by that, the prop of her mangled, burst-open frozen corpse was pretty gnarly and we got a good view of it in the daylight.
• One of the dead bodies James found was next to a tub full of water and there were printed instructions for how to resuscitate a drowning victim. Who were those instructions for, who was drowning, and why?
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();
// ]]