It would be easy to call Rejection an “incel novel” — especially because it starts with a man who’s denied sex by nearly every woman he pursues. That label would tell you how angry these characters are, how vain their efforts, how stunted their worldviews. It summons their yearning and guarantees their failure. But the seven interlocked stories in this book, the second by Tony Tulathimutte, go deeper and fouler than inceldom. In Rejection, sexual failure is only the fruiting body; self-hatred, nihilism, and shame are the mycelium that makes the fungus grow.
We see this in the opening story, “The Feminist,” about a self-defined nice guy and ally who’s stuck “dragging his virginity like a body bag” when he fails to turn any of his friendships with women into something more. In the next story, “Pics,” a woman allows a one-night stand with a male friend to ruin her life. From there, Rejection mutates and expands, moving from close third person to first: We meet a repressed virgin who comes out as gay, then fails to have sex because he’s so terrified of his own fantasies, a try-hard start-up bro who speaks only in mangled slang (“Doesn’t mindfulness hit so different?”), and a mysterious figure who rejects the physical world altogether, living for and on the internet. There’s no one here who feels at home in their body, no one who doesn’t spend too much time online. Rejection ends with what feels like a bid to alienate the reader: The second-to-last chapter consists only of aphorisms (“You catch a fish, and it throws you back”), while the last is a fake rejection letter from a fake publisher that lays out everything wrong with the book.
Described this way, Rejection sounds unbearable, a human centipede of misery crossed with a brain worm becoming an Ouroboros. And yet it works. And it’s funny. Tulathimutte has a gift for horrible images, for scratching a low point till it bleeds: It’s been so long since the hero of “The Feminist” has lost his virginity “it feels like it’s grown back.” After too many rounds with the penis pump, he finds, “When he manages to ejaculate it falls out of him like a touchless soap dispenser.” In the third story, “Ahegao” — named after the cross-eyed gag face characters make in hentai — a used sex doll is discarded “cold and bespooged” and an attempted hookup takes place in a home that smells like “bong runoff and olive brine.” When scenes swing from befouled flesh to weightless onlineness, Tulathimutte takes off in brilliant runs that allow him to flex his rare talent for explaining the internet without sounding like an anthropologist. A section about pre-Musk Twitter and the art of the shitpost in the book’s longest story, “Main Character,” may be the most sincere passage in the whole book. When the mysterious protagonist, Bee, rhapsodizes about the internet, “in its lack of longueurs, the presiding democratic humiliation, everyone asquat behind peepholes and gloryholes” — it rings out like an ode. Or a eulogy.
Tulathimutte has been working in this direction for years. The compulsive porn consumption, painful masturbation, and circular thought patterns of overeducated, elder-millennial protagonists that appear in Rejection all appear in his first novel, 2016’s Private Citizens, too. Somehow, though, that first book was just not as fun. Following four 20-somethings through mid-aughts San Francisco, Tulathimutte strains hard to say something true about the insecurities and hypocrisies of “our generation.” Maybe it was too soon to say what was true about us — or maybe Tulathimutte just wasn’t ready to do it. Private Citizens may be about four different people, but they all sound kind of the same. When the eager progressive is arguing with the druggie cynic, or the tall bipolar scientist with the short insecure tech guy, it tends to read like a single person (the author) playing devil’s advocate with himself.
Rejection is a more mature work. Even with all the cumming and crying. Tulathimutte seems newly ready to go all the way to the bottom; he no longer minds if we think these people are pathetic, so he lets us in on the joke. When we see that the protagonist of “Pics,” an eating-disorder-afflicted white woman named Alison, is the only person in her horny all-girls group chat who capitalizes her texts and ends them with a period, we know her judgment is impaired. A “READ MORE WOMEN” tote bag is deployed as a punch line. When people text a crush, then text again before the crush responds, we cringe in pain and recognition.
After so much time in these characters’ damaged brains, a shift to manifesto mode in “Main Character” feels earned — and exciting, since it includes some of the angriest critique of Asian American identity politics I’ve read in any novel. (Tulathimutte, like a couple of the characters here, is Thai American.) In an essay presented as a blog post, that story’s protagonist, Bee, recounts decades spent pissed off at people who think their Thai Americanness could say anything about them beyond “something to do with my mom really liking Royal Dansk and the Carpenters.” Ranting against Asian Americans who commit the crimes of “hermit-crabbing” onto other cultures or of food-fetishizing “auto-orientalization,” Bee argues that identity is no more than “diet history, single-serving sociology; at its worst, a patriotism of trauma, or a prosthesis of personality.” Bitter! Bracing! After years of reading milquetoast appeals to AAPI solidarity — with vague gestures toward the commonalities between people of completely different backgrounds, languages, and classes — it’s refreshing to read an assessment so ungenerous. At least it’s honest.
Not all the book’s judgments feel so intentional. This feels like the right time to mention the Asian-women thing. The inner lives of Thai American men are an ongoing concern in Tulathimutte’s writing: In both Private Citizens and Rejection, we enter the headspace of these characters while they obsess over porn and their assumed inability to satisfy a white sexual partner. In Private Citizens, that man is short and straight; here, in “Ahegao,” he’s gay and “shorter than a refrigerator.” These men are depressive figures, paralyzed with horniness, and Tulathimutte takes care to back up their fears of emasculation with evidence of society’s cruel baseline, the sexual politics of “no fats no femmes no asians” that goes beyond gay hookup apps.
By contrast, when his books show us Asian women, it’s through the eyes of white women who resent them for being too sexy. In Private Citizens, the character Cory — a desperately insecure, weight-obsessed white woman — despises her roommate Roopa, a skinny Indian American woman whom Cory believes all men love. In Rejection’s “Pics,” Alison, also a desperately insecure weight-obsessed white woman, loses her mind after the friend she slept with shows up to the bar with a skinny Korean American named Cece on his arm. “Oh, it must make him feel so cool to be dating an Asian girl, so small and smooth, so much fun to bounce around in bed,” she thinks, before drinking a million beers and accusing him — in front of Cece — of going for a “Filipina” because he “likes ’em dusky.” Even Bee, from “Main Character,” who was raised a girl but doesn’t identify that (or any other) way, describes their 18-year-old self in similar terms: “I’d grown into slim proportions I guess people found pleasing; to others I was a spotty but petite Asian girl, about 20% jolie and 80% laide with dancepunk aesthetics.”
You don’t have to squint to see the pattern, how these assumptions about the effortless sexual power of small Asian women are smuggled in through the eyes of non-male characters and set in obvious contrast to the Asian men Tulathimutte writes about. In Tulathimutte’s writing, small Asian women are the only ones everyone wants. In Rejection, white resentment is played for laughs; Alison alienates her group chat by calling Cece a “hairless Asian child bride.” She’s both racist and never proven wrong: Cece does win, does become an actual bride. Alison’s story is wobbly for other reasons too. Well-planted in the specifics of internet-addicted white and Asian men, Tulathimutte stumbles in Girl World. Alison hits rock bottom after being invited to too many weddings that aren’t hers, which we’re shown is very tough for women specifically. When she’s being really gross, she “doesn’t bother to move her tampon string out of the way when she pees, so she just walks around all day with a damp string” — hardly the craziest thing that could happen in that department. There’s a rant about chocolate and chick lit and yoga. She’s basic, we get it. You start to miss the horrible men, rubbing themselves raw.
Luckily, or not — your mileage may vary — we get back to them quickly. And to so many other places, too, including a truly bravura description of a sexual fantasy. By the time the book lands on its final chapter, the publisher’s rejection letter titled “Re: Rejection,” exhaustion has set in. A moment to process feels welcome, even if it is aggressively meta. In the voice of this fictional publisher, Tulathimutte tears himself a new one for his use of many characters as an “attempt at misdirection, as you smuggle your own hang-ups into theirs.” He accuses himself of literary crimes equivalent to “giving a speech and then clapping for yourself.” Much like the rest of the book, this frantic anticipation of critique would be so annoying if it wasn’t also so smart. Turns out blue balls can kill a guy. They can also make a really good story.
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();
// ]]