DEV Community

Cover image for The Async Trap: Why ‘Non-Blocking’ Workflows Are Silently Delaying Every Release
Om Keswani
Om Keswani

Posted on

The Async Trap: Why ‘Non-Blocking’ Workflows Are Silently Delaying Every Release

I wasn’t supposed to be watching. I’d finished my work, closed my laptop, and poured a glass of wine. But some impulse — call it morbid curiosity — made me open GitHub one last time. That’s when I saw it: a tiny pull request, five lines of CSS, sitting open for four days with seven comments, three emoji reactions, and zero progress.

It wasn’t a difficult change. Margins. Padding. A mobile card component that looked slightly wrong on certain tablets. The developer who opened it — let’s call him Rahul — wrote a clear description and tagged two reviewers. He submitted it on a Tuesday morning, his time. By Tuesday evening, nobody had looked. Wednesday morning, a reviewer in a different timezone added a comment: “Could we maybe use a utility class here?” Fair question. Rahul replied within the hour: “Sure, let me check.” Then silence. The reviewer had logged off for the day. Another night passed.

On Thursday, a second reviewer chimed in from yet another continent. “LGTM, but the first reviewer had a good point — maybe we align with the design system?” Rahul, now two days into what should have been a ten-minute fix, dutifully updated the code. The first reviewer came back Friday morning with a thumbs-up emoji. But by then, the CI pipeline had drifted. A flaky test failed. The merge button was grayed out. Rahul re-triggered the pipeline and waited. And waited. The green checkmark finally appeared Saturday afternoon. The fix hit production on Sunday night, during a low-traffic window. Four days and five timezones later, a margin tweak that could have shipped during a single coffee break finally saw the light of day.

I stared at that PR timeline like it was a crime scene. Every interaction was polite, professional, and “non-blocking.” No one had said no. No one had been unhelpful. And yet, the system had conspired to inject days of invisible latency into something trivial. This was our team’s async culture in all its glory: an elegant, well-intentioned machine for manufacturing waiting.

The worst part? Rahul didn’t even complain. He’d learned that complaining about speed in an async-first team is like complaining about the weather — pointless and vaguely embarrassing. Instead, he internalized the lesson: small fixes aren’t worth the overhead. Next time, he’ll batch a dozen tiny changes into one monstrous PR that nobody wants to review, and the queues will grow fatter, and the cycle times will stretch even further. The async trap isn’t just about slow shipping; it’s about the quiet defeatism it breeds.

I started calling it “polite blocking” after that night. The idea that a queue is still a queue, even if everyone in it is being considerate. The belief that we’ve eliminated handoffs just because we’ve replaced “Hey, got a sec?” with an @mention that can legally be ignored for six hours. The collective fiction that fragmented, interleaved attention is the same as deep collaboration, as long as we all reply within a reasonable window.

The truth is, asynchronous work only thrives when we also define synchronous safety valves. Not meetings — I’m not advocating for a return to the calendar hellscape — but deliberate, small rituals that clear the invisible logjam. A daily “sync hour” where the whole team overlaps, not for standup theatre, but for real-time unblocking. A rule that any PR under fifty lines that’s been open for more than a day gets a guilt-free, two-minute huddle. An acknowledgement that sometimes the fastest way to unblock a teammate is to interrupt your own flow for a moment, because the alternative is four days of silent, polite agony.

The next Monday, I brought that timeline to the team. I didn’t present it as a failure. I just asked them to look at the gaps between comments — the long white spaces where nothing happened. You could feel the shift in the room. Someone said, quietly, “I didn’t realize it was that bad.” Someone else said, “I thought I was the only one waiting.” We all realized we’d been so busy respecting each other’s boundaries that we’d built a beautiful, invisible cage out of good intentions.

The async trap doesn’t need you to be rude to work. It just needs you to be busy, spread across timezones, and too polite to tap a colleague on the shoulder when a five-line fix is gathering dust. The escape starts when you stop mistaking “I’m available later” for “I’m working together now.”

Top comments (0)