Work Text:
His heart drops when he first reads the texts. Dream had promised.
Dream
hey so um
george asked me if i would go to prom with him
is that ok?
sapnap?
Sapnap would be lying if he said he didn’t care, because no matter what he tells himself, he’d been looking forward to it. A lot, actually. He’d even picked out a tux with his mom, and decided on what flowers he’d get Dream on the night. He had it all planned out, down to the pizza they’d get and the video games they would play during the sleepover that followed the dance. Dream would dance with him and all their friends, laugh with him, be happy with him. He reads the texts again.
Would he treat you better?
He chews on his lip. He thinks about how Dream would pout pleadingly, how he would smile if George asked him out, or his giddiness telling Sapnap whenever George does so much as look at him.
When the thoughts get too much and grow too suffocating, he jumps into a game of Valorant with Punz. He lets the chatter of his teammates and the sound of bullets being fired from his screen fill his ears and cloud his thoughts. It’s an attempt to distract himself. Honestly, it works until they’ve played well into the early hours of the next morning, but Punz says his eyelids feel too heavy to continue.
Sapnap ends up sitting at the edge of his bed, left to his own devices. He swings his dangling legs back and forth. He reads them once more. Expressing his feelings to Dream would be the harder part. Because Dream’s always been open one, wearing his heart on his sleeve. But Sapnap? He’s weak. One look at the disappointment on Dream’s face, and he’d break.
So, as hard as it is, he gives in. He types out two messages on his phone, rubs his eyes, and then drops onto his bed pathetically.
Sapnap
yeah that’s fine
dw about it :)
Who’s he to deny Dream his happiness anyway?
He first realises those feelings for Dream when he’s fifteen.
He sits in the corner of their school’s band room, curled up into himself on an uncomfortable plastic chair. He holds a sheet of paper wet with tears in his hand, crease lines forming from where his fingers put too much pressure. His breaths are shaky and inconsistent, and his cheeks have glowing tear tracks running down.
It’s one test – one grade in one class but everyone knows Sapnap isn’t the type to let it go easily. Neither are his parents. It’s never been easy, keeping up the good grades with pressure falling onto his back like bricks from a tumbling building, but he tries. Dream teases him about it, calls him a schoolboy when really, it’s his way of telling Sapnap he’s smarter than he knows.
Sapnap knows he tried his best, but he can’t help but feel it’s not enough. It’ll never be enough, not for his family, not for anyone. He can’t live up to the expectations when all he does is disappoint people, even Dream. So he’s about to rip the paper to shreds, curl up even further into a corner next to his violin case and stay there. Forever, if he could have things his way.
He makes it to maybe a centimetre of tear before he hears the door open.
And there he is, standing tall in his light wash baggy jeans and distressed band t-shirt. His soft blonde curls cover his forehead and furrowed brows, and almost hide the concern buried within light green eyes.
“Sapnap,” he when his eyes land on the boy balled up at the back of the room.
His voice is softer, gentler, than it usually is and Sapnap tries his best to look down to where he can’t even see Dream’s bright green sneakers.
“Please go,” Sapnap manages to squeak out after a few hiccups. It’s small, but harsh nevertheless.
But Dream’s never been one to listen. He’s always been too kind, too selfless to let his own feelings have more worth than Sapnap’s. He’s within inches of Sapnap’s face in a second, one hand on his chin and the other resting on his wrist holding the test. Sapnap doesn’t even move away. Because they both know his voice sounds too quivery and his eyes look too watery for him to have meant that.
Dream tilts Sapnap’s face upwards, “Baby, it’s okay.”
Sapnap thinks that should’ve been his first sign. How Dream let the name roll off his tongue so effortlessly, and how Sapnap’s heart ached to hear it again.
He turns his head and looks away to avoid Dream’s eyes. He pulls his hand away and wipes under his eye with the back of it, and lets out a sniffle. He says nothing, fearing his voice breaking and letting go a dam of tears he’s holding back.
Dream moves his thumb to wipe it over Sapnap’s cheek. He’s always had freakishly large hands.
He speaks up, voice quiet, “Look at me, Sapnap.”
He’s more pleading than anything, and Sapnap can already tell, even without looking at him, he’s making those big puppy dog eyes of his. He does it every time he wants something, and Sapnap lets it work every time without fail.
Sapnap turns his head, hesitant. Dream looks worried, he notes. His brows are scrunched up and he’s chewing on the inside of his cheek. His eyes are searching for something, anything, that could tell him what Sapnap’s thinking.
Dream brings up his hand so that each is holding one side of Sapnap’s face. He moves it a little so Sapnap and he meet eye to eye. Even with Sapnap on a chair and him kneeling, they’re about the same height. Sapnap’s always called him a freak of nature, but deep down he knows he’s just the one with below average height. The position must be uncomfortable on his knees, but Dream doesn’t let it show on his face.
Instead, his lips curl into a soft smile, “It’s going to be okay. I promise.”
Sapnap scoffs, “Don’t make promises you can’t keep.”
“Who says I can’t keep it?”
Sapnap throws his head back and lets it hit the back of the chair. He pushes Dream’s hands away too. Dream allows them to bask in the silence for a long time. Sapnap looks up at the ceiling, counts the spiderwebs clinging the corners of the walls. He hears Dream move things around in his bag.
“Did you at least get some lunch?”
Sapnap closes his eyes, and tries not to think about how annoying Dream sounds when he’s nagging. He also tries not to think about how he keeps lying to himself when he really means endearing. It doesn’t work.
Dream taps him on his knee to grab his attention. When Sapnap doesn’t acknowledge it, he taps it again, only with a, “Oh Sapnap!” in a singsong voice.
Sapnap groans, “No, I didn’t.” He moves his gaze back to where Dreams looking up at him from the floor with a lunchbox in his hand.
“You’re infuriating. Did you know that?” he adds.
Dream smiles at him, though it’s less sad than before and more teasing.
“My mom made rice,” he offers sincerely, holding out the box.
Sapnap feels a pit in his stomach. Not only has he worried him, he’s made Dream give up his food for him. God, how much more pathetic can he get? He’s sitting here, nose running and hoodie stained with his own tears, and forcing Dream to be with him. How selfish is that? Dream has his own life, his own responsibilities. He can’t spend every waking moment catering to Sapnap’s needs.
“I’m fine. You eat it.”
Dream lets his hand fall and concern takes over his face once more, “Please?”
Sapnap tries his best not to meet Dream’s eyes, determined to keep up his act for god knows what reason.
In the corner of his eye, he sees Dream push the rice to one side with his fork, and pick up something else from one edge of the lunchbox.
He’s forced to look at Dream when he feels something cold and round poke the side of his face. He sees begging eyes, and a single grape held close to his face. “Please?” he pleads again.
Sapnap sigh. The defeat laced in Dream’s voice struck pain in his heart. He realises he’ll do anything for it to go away.
He gives in, letting his jaw fall slowly and slightly glaring at Dream. He knows he looks like a grumpy toddler throwing a fuss, but he can’t bring himself to care.
Dream, however, brightens up. His eyes gain a spark to them, and he straightens his back and stretches out his arm even more.
The grape gets less than a centimetre away from Sapnap’s mouth before he grabs Dream’s hand, hesitant. Dream tilts his head and slightly raises an eyebrow like a dog. Sapnap lets it go.
His lips brush against Dream’s finger as he chews on the grape, and he swears he doesn’t feel his heart skip a beat when it does. Dream does nothing but rest palm on the side of Sapnap’s neck, “I love you, Pandas. Okay?”
And it’s so, so painfully intimate, so utterly domestic, that Sapnap immediately knows. He knows he’s completely gone, that he’s been digging himself into this hole for so long. He has a crush. A stupid crush, on his stupid best friend of years. He knows Dream would never feel the same way. Because why would he? Sapnap’s not special, he’s barely average in anything he does.
And he knows, that knowing only makes him dig harder, feel more for Dream. He knows it’s a dangerous territory. He does it anyway.
The days pass by slow. Dream and George make plans for the prom together, Dream cancels on the sleepover with Sapnap, and Sapnap sulks in silence. He’s learnt that staying away from Dream and the whole idea of prom itself, is better for his mental health. There’s only so much heartbreak he can take.
So, he avoids. He avoids Dream’s calls, Dream’s texts, the thoughts of Dream, the thoughts of anything that remind him about the prom and Dream and Dream at the prom but without him.
It works. Until it doesn’t.
His mom forces him to go to the dance. He’s never been one to listen to her, but she insists it to be an experience of a life time. A must-have in your core memories of high school.
He stands in the line for the tickets.
Dream, as sneaky as he thinks he is, isn’t very subtle. Sapnap watches him beg his classmates to cut the line behind him, so that he’s standing right in front of Dream and there’s no place to escape.
“Sapnap,” he says. He sounds demanding, like he’s been wanting something for a long time. What that something is, Sapnap can’t get behind.
He doesn’t move to respond. He doesn’t look at Dream, thinking it would be better for himself if he didn’t give awkward conversations his time of day.
But Dream’s an idiot. A complete idiot who’s persistent on getting himself punched in the face. Because Sapnap’s sure that’s how it’ll end up if Dream doesn’t stop holding his wrist or rubbing circles with his thumb on Sapnap’s hand because he knows it calms him.
“What, Dream?” he replies, guarded.
Dream’s grip on his weakens, and his breath hitches. Sapnap’s words came out harsher than intended, and he thinks he can almost feel Dream take a step back.
He tries again, “What do you want?” The words are no better but he hopes they sound more genuine than angry.
“What do I want?”
Sapnap spins at that, almost dropping the books in his hand. Dream had spat the words as if they filled him with disgust. As if Sapnap filled him with disgust. It was written all over his face too. Sapnap sees the confusion in his eyes quickly turn to rage.
Dream’s jaw tenses up before he speaks, “You’ve been acting weird for weeks. There’s clearly something going on and you won’t talk to me. And even when you do, you act like you fucking hate me,” his voice trembles at the end. It’s barely there, everybody else would’ve missed it. But then again, not everyone knows him like Sapnap does.
Sapnap stays silent. He knows he fucked up, he knows, but he also doesn’t know how to deal with the feeling of being replaced by George constantly tugging on his heartstrings. He looks away, and bites his lip to stop it from shaking.
Dream visibly softens at that. He sighs, and rubs his forehead before moving out of the line. Sapnap follows him, also realising that they’ve been displaying their issues for the whole school to watch.
They awkwardly lean against the wall for a minute or two, Dream staring at the ceiling above them, and Sapnap watching the people pass by. The air around them is heavy. It holds tension and weight, as if putting pressure on them to see which one cracks first.
Dream sighs again before speaking up, “Look. I know something’s wrong. Just tell me.”
“Nothing. Nothing’s wrong Dream,” Sapnap says as if they both don’t know it’s a blatant lie.
Dream scoffs, “That’s the first lie I’ve heard from your mouth since the fourth grade.”
Sapnap looks at him and raises an eyebrow.
Dream has a bewildered look on his face, “When you broke my Percy Jackson keychain and refused to admit it?” He shifts his whole body to face Sapnap properly and waves his hands around while he talks. Sapnap reminds himself it’s not adorable. Because it isn’t.
His voice stays expressive and light while he explains, and it makes Sapnap smile. He misses these kinds of moments - when it’s just him and Dream, talking about nothing and everything at the same time, as if Sapnap’s the only one worthy of Dream’s attention. Sapnap smiles a little at the memory.
“Sapnap. Is it about the prom?” Dream asks, a more serious demeanour suddenly taking over him.
Sapnap’s body language mimics his, stiffening up, “Just forget about it, okay?” he takes a step backward before continuing, “Nothing’s wrong. I swear.”
Dream lifts himself off the wall, looking agitated. He grabs Sapnap’s wrist to try and stop him from leaving. His grip is tight, almost possessive. Like it means something.
“Stop lying to me!” he exclaims, bringing everyone’s attention to them.
Sapnap feels his cheeks heat up in embarrassment. He stares down at his feet. His laces are untied.
He exhales, “I’ve been lying to you for a long time, Dream.”
Dream’s hand moves to his shoulder. Dream’s knits his brow, and quiet fear flashes across his face for a mere second. His mouth drops open, words barely a hurried whisper, “What?”
He holds Sapnap tight again, his thumb lightly pressing on the edge of his neck. Sapnap thinks his touch burns.
He yanks Dream’s arm off, “God, that’s literally it,” his voice comes out shaking and he doesn’t even realise he’s almost yelling, “You don’t know, you never know!”
He squeezes his eyes shut, hoping when he opens them he’ll be safe in his own bed and this would’ve all been a dream. He rubs harshly on his right eye.
“You say- you do all these things,” his voice cracks as he lightly gestures to Dream’s arm still reaching out to him, “like you don’t know what it does it to me. It’s just too much.”
Dream pulls back, freezes up. There’s hurt written all across his face. Even through all his pain, Sapnap can feel just a smidge of satisfaction. And maybe it is selfish – seeing Dream like this. But a part of him, one that he buries deep down, can’t help but think he deserves some of it.
“You’re too much,” he finishes, as if Dream didn’t already look completely broken.
Sapnap forces himself to look away.
“Fuck,” Sapnap whispers to himself as he spills the fruit punch on his shoes.
He hates this more than he expected himself too. His mom had to practically drag him out of bed for the night, telling him she’d rather him be around friends than not, even when he’s miserable.
What she spectacularly fails to understand is that without Dream, Sapnap doesn’t really have any other friends. He’s never had a large friend group; he’s always been quieter preferred to keep to himself. Even the few friends he calls his are really more Dream’s friends who, over time, have grown to tolerate Sapnap’s clinginess to Dream as if he were a koala bear.
So, he stands awkwardly in a corner of the gym, completely alone. The noise of people chattering and laughing over the poorly rated pop song playing fills his ears. Girls are there in pretty, puffy dresses all around, giggling with their friends and pointing out which boys look devastatingly handsome in their tuxes. Speaking of which, Sapnap’s desperately looking away from any blonde mop of hair standing out in fear of seeing Dream. The flashing blue-green lights of the disco ball standing out against the brightly coloured balloons hurts his eyes. What kind of school picks orange as their school colour anyway? He grabs a tissue from the table next to him to bend down and wipe his shoes clean. Embarrassment be damned, he’s not going home to tell his dad he’s ruined his only good pair of shoes.
“Sapnap,” a hand suddenly meets his shoulder, “you’re here!”
Sapnap turns around to slicked back dark hair and familiar cat-like eyes in a baby pink suit.
“George,” he breathes out, trying not to show how taken aback he is.
George smiles wide like he usually does and runs his hand through his hair. It’s been a while since they’d talked. Though, that’s more Sapnap’s fault than anyone else’s. He hates the jealousy that pooled in his gut every single time he saw George, because he could see why Dream liked him. And what he hates even more is how George always warms up to Sapnap, no matter how cold he is. He’s perfect, and it’s not his fault Sapnap lets his jealousy get in the way of what could be a perfect friendship.
“I didn’t think I’d ever see you here,” George says, “you don’t seem like the type.”
Sapnap huffs and looks down at his sticky shoes before meeting his eyes, “You’re right. I’m not.”
George smiles again, more amused this time. He sticks his hands in his pockets, “Well, either way, I’m glad to see you.”
Sapnap returns the smile genuinely and thinks George doesn’t deserve all the anger he directs towards him. The music fills the silence for a moment where both look at each other, taking in the atmosphere around them. Sapnap tries not to wonder where George’s date is.
George seems to read his mind, because his face softens, “Dream does too, you know.”
Sapnap feels his cheeks start to heat up with embarrassment. He lightly scratches the side of his head, thinking of ways he can get out of having this conversation. Because he’s almost certain having a conversation about your crush with your crush’s prom date can only end badly.
“Look, I’m sorry George, but I need to go to the toilet,” then, out of guilt, he adds, “This was nice, though.”
Before he can turn around to leave, George grabs his arm.
“Just talk to him. Okay? He’s been looking for you all night.”
Sapnap glances at him, and then nods.
He turns his back on him, and makes his way towards another corner. This time, one preferably farther from where more people could confront him. George doesn’t have to know what he does and doesn’t do. He’ll talk to Dream on his own terms, when he’s ready.
And what does George know about him and Dream? Dream’s always been a hell of an actor, top of the theatre class. For all anyone can tell, he could hate Sapnap right now. Sapnap deserves it too, with the way he’s been treating his best friend, his Dream, these past few weeks. He doesn’t deserve Dream’s kindness after all those words he spat out at him out of pure jealousy. George knows nothing. Dream would never even want to see him after putting up with that.
“Sapnap.”
Sapnap gulps. The voice is lower this time, throatier. He smells traces of citrus shampoo and minty deodorant, and he immediately knows.
Of course, it’s him.
He looks up at Dream, into his green eyes that look greener than usual in the shining lights. His face is more guarded than usual, too. Sapnap’s sure that’s his doing. He feels horrible.
“Dream,” he starts. He takes a breath, not knowing how to fix this. “I don’t know what to say.”
Despite everything, Dream gives a smile. It’s a little sad, but it gives Sapnap some hope of salvaging what they have. Or used to, at least. His eyes become less droopy as he does, and he asks, “Dance with me?”
Sapnap takes a step back, feeling the heaviness on his chest lift a little bit, “What?”
Dream looks at Sapnap, then behind him at the dance floor, then again at Sapnap. He takes a step closer and echoes what George said minutes ago, “Come on, Sapnap. I missed you.”
The hints of sadness in his pleading voice shoot pangs of guilt through Sapnap’s chest. Dream tilts his head like a puppy, and Sapnap puts someone else’s feelings above his own for the first time in weeks.
“Fine.”
Dream perks up instantly, and takes Sapnap’s hand in his, interlocking their fingers. He pushes his way through the crowd of sweaty teenagers making sure Sapnap follows his every step. A tall, lanky figure pushes between them once, and Sapnap thinks Dream’s going to let go of him – rethink all of this and leave him, replace him like he should. Dream only holds on tighter.
They make it to the dance floor and the song playing fades into a slower one, one that Sapnap vaguely recognises as Mrs Magic. He looks up at Dream, eyes wide and ready to pull away. Who dances to a slow song with someone who isn’t their date?
Dream smirks, that bastard, and curled his fingers around Sapnap’s wrist and pulls it up to his own neck. Sapnap hesitates, keeps his arm stiff. They don’t say anything, but after years of friendship they’ve learnt to talk without words. Dream pleads. Sapnap lets him.
He mimics Dream’s movement and brings up his other hand, fingers flat and cold against the back of Dream’s neck. Dream’s eyes sparkle with that something again, and he wraps his fingers around Sapnap’s waist, tight.
The music flows smoothly, and it’s easy. Being with Dream is easy, so easy that Sapnap lets himself forget for a moment. He takes him in, all of him in. Their chests are almost pressed together, and he’s sure Dream can feel his warm breath on his neck. Dream’s soft, feather touch leaves Sapnap’s skin tingling, begging for more.
Dream’s the first to speak, easing the tension between them.
“My sister’s pissed at you, y’know.”
“What? Why?” Sapnap asks and the confusion shows on his face.
“Says she misses you,” although the words are sad, he gives a smug smile, “You promised to play Mario Kart with her.”
Sapnap immediately softens, feeling bad. “Oh. I’m sorry.” He avoids looking at Dream’s eyes, or lips, or anything of his really. He looks at the floor.
Dream removes on of his hands from Sapnap’s hip to lightly tilt his chin up, “It’s okay. I’m sure she’ll be glad to see you’re back.”
They moved slow at first, feeling stiff and awkward dancing in front of the school. But then Sapnap finally, finally takes one good look at Dream’s toothy smile, and the whole world disappears.
He knows he’s weak and he gets weaker every second he doesn’t tear his eyes away, but he does it anyway. He lets Dream ruin him anyway, because what good is he if not completely shattered?
He locks his fingers behind Dream’s neck and stands up straighter, more enthusiastic and careless with his movements. Dream seems to take the hint and pulls him closer. It’s barely an inch, but it makes all the difference in the world. He doesn’t even think about George.
“You deserve so much, Sapnap.”
Dream says it like it’s obvious, and yet something feels missing – incomplete. Sapnap can’t tell what. He ignores it to acknowledge his heart speeding up. He looks back down to avoid Dream’s piercing eyes and hide his rising blush.
His shoes are still sticky from the fruit punch, but he hopes Dream hasn’t noticed. Mr. Brightside starts to play in the back softly. He’d thought it was ironic at first. In hindsight, he should’ve realised it was more mocking than anything.
Dream looks over Sapnap’s head, looks behind him. His eyes gloss over with something. He feels like he already knows.
Sapnap twists his neck to glance, and sees George.
Thunder roars outside. Tears well up in his eyes.
Guilt. It’s guilt, the thing in Dream’s eyes. Has it been guilt all along? Or was it pity that lead Dream to dance with Sapnap, was it pity that even made him promise a prom together in the first place?
Fuck. He should’ve expected this.
Sapnap feels sick. He feels the bile rising in his throat, filling up his lungs and suffocating him. He hates himself for believing that he could have something with Dream, because even the things he thought were already there weren’t even real.
What are you doing here?
Suddenly he can’t do this anymore. He drops his arms to his side and moves away, taking quick strides towards the door that soon turn into a sprint. He needs to leave. He needs to get away, from this, from Dream. He makes his way to the parking lot as fast as he can, ignoring Dream calling out his name. He mistakes the tears rolling down his cheeks for rain.
He finds his wreck of a Corolla in the midst of all the other cars. He pauses to look at the dent near the headlight. He remembers how hard him and Dream laughed that day, despite the fact that they had just crashed his brand-new car.
He slowly opens the door to the driver’s seat and gets inside. He can’t even bring himself to put his hands on the steering wheel. Driving in this state would only lead to horrible, horrible things. But then again, what’s worse than what’s already been done?
So, he sits in his car, head in his hands, and water dripping down his hair into his lap. His teeth chatter. Dream opens the door. Sapnap’s tired, and lets him.
He doesn’t turn to look at Dream as he wordlessly sits down in the passenger seat. He doesn’t say anything as Dream quietly takes off his jacket to drape it around Sapnap.
They sit in silence.
Sapnap thinks he’s tired, and that it’s time to at least try.
He tries to coat the truth in sugar and sweet so that when this all ends, it won’t leave a bitter taste in their mouths.
He tries, breathes out quietly, “I love you.”
It comes out raw.
“You think I don’t know that?”
And just before the panic starts to settle in, just before Sapnap fully registers the cracks in Dream’s voice, he tests the waters. He asks, “Then why’d you let me get my hopes up? Why’d –” he sharply inhales and his voice starts to grow louder with hurt, “Why’d you touch me like you meant something?”
Dream looks at him, and Sapnap can feel himself gravitating towards him. As if Dream’s stare is pulling him closer, because how could it not.
“Because…you said it yourself,” Dream’s voice breaks even more, “I’m too much.”
Sapnap feels his heart drop to floor, shatter like glass. He tries to form words, but nothing comes out. The world slows down around them, the music from the gym blending with passing by traffic, slowly fading away until there’s nothing left but the heavy air between them.
“I love you, Pandas,” he says as sincere as he can, “I always have.”
Maybe it’s quiet. Maybe it’s loud. Sapnap says nothing.
Because here it is, his inevitable death. The moment where everything finally makes sense, where he finally knows, and he’s completely done for. And somehow, he still thinks there’s something beautiful about it. How he realises he’s falling and burning and drowning all at the same time, yet he lets it happen. He just falls harder, drowns deeper, burns brighter, because he wants. He knows he wants to feel everything; he wants it to hurt because the pain’s the only thing keeping him alive. Because the knowledge that he’s hurting just makes him want it to hurt worse.
He lets go of himself. He holds onto Dream’s collar and tugs on it until they’re millimetres apart.
“I know that it’s hard being arou—” Dream starts, but Sapnap only lets him make halfway through his sentence before closing the distance between them.
Dream tastes of dying stars and burning supernovas and Sapnap is nothing if not a man wanting to light up the sky. It’s perfect. It’s all he could ask for.
Dream’s the one to pull away first, a mixture of emotions showing on his face. His brows furrow up, and Sapnap realises he wants nothing more than to smooth them out.
Dream continues, determined to let out what he has to say into the open air, “I know what you have to put with to be around me. And I don’t want to put you through that.”
Sapnap hears Dream sniffle and he pulls his best friend into a hug. He can feel his shoulder getting damp with tears, and he soothingly rubs circles on his back. He lets Dream cry it out, reassuring and whispering sweet nothings into his ears. He deserves at least that, after all the times he’s done it for Sapnap.
It takes a few minutes, but he gets it, they both get it. Dream gives him a wet smile. Sapnap returns it with a soft kiss.
(“What about George?”
“He’s known I’ve loved you since the minute I knew.”
“That motherfucker.”)
