<!DOCTYPE html>
<html>
<head>
<title>Bytes: Mediabunny and McDonald's WiFi</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="color-scheme" content="light dark">
<meta name="supported-color-schemes" content="light dark">
<link href="https://fonts.googleapis.com/css2?family=Fira+Mono&family=Outfit:wght@400;500;700;900&family=Paytone+One" rel="stylesheet">
<style>@media (prefers-color-scheme: dark) {
.email-wrapper {
color: #F9F4DA !important;
background-color: #0F0D0E !important;
}
hr {
border-color: #262422 !important;
}
mark {
background-color: #231F20 !important;
color: #F9F4DA !important;
}
pre {
background-color: #231F20 !important;
border: 1px solid #231F20 !important;
color: #F9F4DA !important;
}
.bg-alt {
background-color: #231F20 !important;
}
.unsubscribe-link {
color: #504C48 !important;
}
.token.punctuation {
color: #f9f4da !important;
}
}
@media screen and (min-width: 600px) {
.mobile-break {
display: none;
}
}</style>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<table class="email-wrapper" border="0" cellspacing="0" width="100%" style="background-color: #FFF; border-collapse: collapse; color: #231F20; font-family: Outfit, sans-serif; font-size: 16px; width: 100%;"><tbody><tr>
<td style="border-collapse: collapse !important; word-break: normal;"></td>
<td width="600px" style="border-collapse: collapse !important; width: 600px; word-break: normal;"><div style="max-width:600px;padding-top:80px">
<div style="text-align:center"><img width="600" style="max-width: 100%; padding-bottom: 40px;" src="https://bytes.dev/images/bytes-banner-rounded.png" alt="Bytes"></div>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;"><strong style="font-weight: 600;">Today’s issue:</strong> Using AI to compile 22-year-old code, meditating on supply chain attacks, and becoming the Cloudflare Captain.</p>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">Welcome to <a href="https://click.convertkit-mail4.com/r8u3l3erqqhoh3mk7okt2hdel5666h7h4n26/m2h7h6u38zevq9sm/aHR0cHM6Ly9ieXRlcy5kZXYvYXJjaGl2ZXMvNDI2" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1789096371">#426</a>.</p>
<hr style="border: 0; border-bottom: 5px solid; border-color: #f5f5f5; margin-bottom: 100px; margin-top: 100px;">
<div style="text-align:center;margin-bottom:36px">
<img width="80" src="https://bytes.dev/images/content/eyes.png" alt="Eyeballs logo" style="max-width: 100%;"><h2 style="font-family: Paytone One, sans-serif; font-size: 28px; margin-top: 10px; text-transform: uppercase;">The Main Thing</h2>
</div>
<div class="bg-alt" style="background-color: #f5f5f5; border-radius: 16px; margin-bottom: 40px; max-width: 100%; padding: 24px; padding-bottom: 12px;">
<img src="https://bytes.dev/images/content/pikman.jpg" alt="A stunned Pikman saying, going nonverbal" width="600" style="border-radius: 5px; max-width: 100%;"><p style="font-family: Outfit, sans-serif; font-size: 15px; font-style: italic; line-height: 1; margin: 0; padding-bottom: 4px; padding-left: 24px; padding-right: 24px; padding-top: 10px; text-align: center;">Me 10,000 words deep in the FFmpeg docs just trying to rotate a video<!-- --> </p>
</div>
<h3 style="font-size: 24px; margin-bottom: 0; padding-left: 24px; padding-right: 24px;">Mediabunny and McDonald’s WiFi</h3>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">Working with media in the browser has always been a nightmare – you either ship a bloated FFmpeg + Wasm build that takes forever to spin up, or you punt everything to the backend and pay the latency + infrastructure tax.</p>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">But everything changed a few weeks ago when a German developer named Vanilagy launched <a href="https://click.convertkit-mail4.com/r8u3l3erqqhoh3mk7okt2hdel5666h7h4n26/dphehmue0n5vowtm/aHR0cHM6Ly9tZWRpYWJ1bm55LmRldi8=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1789096372">Mediabunny</a>, after months of grinding on the project at his <a href="https://click.convertkit-mail4.com/r8u3l3erqqhoh3mk7okt2hdel5666h7h4n26/e0hph0u70o46l2i8/aHR0cHM6Ly94LmNvbS92YW5pbGFneS9zdGF0dXMvMTk2MjU3NzI3NzUxNTkwNzEwOQ==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1789096373">local McDonald’s</a> (like all the great minds of our time).</p>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">Mediabunny is a TypeScript-first media toolkit for reading, writing, and converting video and audio files in the browser. And at the risk of being <a href="https://click.convertkit-mail4.com/r8u3l3erqqhoh3mk7okt2hdel5666h7h4n26/7qh7h2u9o5zq64hz/aHR0cHM6Ly94LmNvbS9GRm1wZWcvc3RhdHVzLzE5NTI0Mjc5NTYyNzE0NjA2OTI=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1789096374">cyberbullied</a> by the FFmpeg team, I must say it looks pretty clean.</p>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">Here are a few cool highlights:</p>
<ul>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;"><strong style="font-weight: 600;">Efficient reading & writing</strong> – Extract metadata, frames, and tracks from huge media files. Programmatically generate new MP4/WebM files with multiple audio/video streams directly on the client.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;"><strong style="font-weight: 600;">Conversion API</strong> – A simple, async API that lets you transmux, transcode, resize, rotate, trim, and resample media.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;"><strong style="font-weight: 600;">Universal I/O & codec support</strong> – Read/write files from memory, disk, or the network and inject media data from canvas, webcam, mic, or screen. Full support for major container formats and 25+ codecs.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;"><strong style="font-weight: 600;">Built for the web</strong> – Pure TypeScript, zero deps, with a highly tree-shakable API.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;"><strong style="font-weight: 600;">Blazingest performance</strong> – ~60x faster than <code style="font-size: 14px;">ffmpeg.wasm</code> in benchmarks thanks to progressive reading/writing, pipelined design, and hardware-accelerated encoding/decoding.</p>
</li>
</ul>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;"><strong style="font-weight: 600;">So, will this replace FFmpeg now?</strong> Not really. FFmpeg still rules with hundreds of codecs, weird legacy formats, and decades of battle-testing — but all that power makes it heavy and clunky in the browser. Mediabunny keeps its scope smaller on purpose, which makes it a great fit for web apps like editors, converters, and streamers.</p>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;"><strong style="font-weight: 600;">Bottom Line:</strong> McDonald’s Diet Coke remains undefeated.</p>
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="border-collapse: collapse; margin-top: 40px; text-align: center;"><tbody><tr><td style="border-collapse: collapse !important; padding-top: 12px; word-break: normal;">
<a href="https://click.convertkit-mail4.com/r8u3l3erqqhoh3mk7okt2hdel5666h7h4n26/owhkhwuwrdop64iv/aHR0cHM6Ly9mYWNlYm9vay5jb20vc2hhcmVyL3NoYXJlci5waHA_dT1odHRwcyUzQSUyRiUyRmJ5dGVzLmRldiUyRmFyY2hpdmVzJTJGNDI2" rel="noopener" style="color: #12b5e5; font-weight: 600; padding-left: 5px; text-decoration: none;" target="_blank" url-id="1789096375"><img alt="" style="display: inline-block; max-width: 100%; width: 32px;" width="25" src="https://bytes.dev/images/fb-share-icon.png"></a><a href="https://click.convertkit-mail4.com/r8u3l3erqqhoh3mk7okt2hdel5666h7h4n26/z2hgh7ue3xwnk3bp/aHR0cHM6Ly93d3cubGlua2VkaW4uY29tL3NoYXJpbmcvc2hhcmUtb2Zmc2l0ZS8_dXJsPWh0dHBzJTNBJTJGJTJGYnl0ZXMuZGV2JTJGYXJjaGl2ZXMlMkY0MjY=" rel="noopener" style="color: #12b5e5; font-weight: 600; padding-left: 5px; text-decoration: none;" target="_blank" url-id="1789096376"><img alt="" style="display: inline-block; max-width: 100%; width: 32px;" width="25" src="https://bytes.dev/images/li-share-icon.png"></a><a href="https://click.convertkit-mail4.com/r8u3l3erqqhoh3mk7okt2hdel5666h7h4n26/p8hehqu4zoxm24iq/aHR0cHM6Ly90d2l0dGVyLmNvbS9pbnRlbnQvdHdlZXQvP3RleHQ9SG93JTIwTWVkaWFidW5ueSUyMGNhbiUyMHNhdmUlMjB5b3VyJTIwd2ViJTIwYXBwJTIwZnJvbSUyMEZGbXBlZyZ1cmw9aHR0cHMlM0ElMkYlMkZieXRlcy5kZXYlMkZhcmNoaXZlcyUyRjQyNg==" rel="noopener" style="color: #12b5e5; font-weight: 600; padding-left: 5px; text-decoration: none;" target="_blank" url-id="1789096377"><img alt="" style="display: inline-block; max-width: 100%; width: 32px;" width="25" src="https://bytes.dev/images/tw-share-icon.png"></a><a href="https://click.convertkit-mail4.com/r8u3l3erqqhoh3mk7okt2hdel5666h7h4n26/x0hph3uew03op9u5/bWFpbHRvOj9ib2R5PVRob3VnaHQlMjB5b3UlMjdkJTIwbG92ZSUyMHRoaXMlMjB3ZWVrJTI3cyUyMEJ5dGVzJTBBLS0tJTBBSG93JTIwTWVkaWFidW5ueSUyMGNhbiUyMHNhdmUlMjB5b3VyJTIwd2ViJTIwYXBwJTIwZnJvbSUyMEZGbXBlZyUwQWh0dHBzJTNBJTJGJTJGYnl0ZXMuZGV2JTJGYXJjaGl2ZXMlMkY0MjYmc3ViamVjdD1Zb3UlMjBsaWtlJTIwY29ybmJyZWFkJTNG" rel="noopener" style="color: #12b5e5; font-weight: 600; padding-left: 5px; text-decoration: none;" target="_blank" url-id="1789096378"><img alt="" style="display: inline-block; max-width: 100%; width: 32px;" width="25" src="https://bytes.dev/images/em-share-icon.png"></a>
</td></tr></tbody></table>
<hr style="border: 0; border-bottom: 5px solid; border-color: #f5f5f5; margin-bottom: 100px; margin-top: 100px;">
<div style="text-align:center;margin-bottom:36px">
<img width="150" src="https://bytes.dev/images/content/qa-wolf-logo.png" alt="QA Wolf logo" style="max-width: 100%;"><h2 style="font-family: Paytone One, sans-serif; font-size: 28px; margin-top: 10px; text-transform: uppercase;"><span>Our Friends <br class="mobile-break">(With Benefits)</span></h2>
</div>
<div class="bg-alt" style="background-color: #f5f5f5; border-radius: 16px; margin-bottom: 40px; max-width: 100%; padding: 24px; padding-bottom: 12px;">
<img src="https://bytes.dev/images/content/cardi-trial.jpg" alt="Cardi B in her trial looking frustrated at the camera" width="600" style="border-radius: 5px; max-width: 100%;"><p style="font-family: Outfit, sans-serif; font-size: 15px; font-style: italic; line-height: 1; margin: 0; padding-bottom: 4px; padding-left: 24px; padding-right: 24px; padding-top: 10px; text-align: center;">Me seeing bugs in prod after the team spent 6 weeks writing tests<!-- --> </p>
</div>
<h3 style="font-size: 24px; margin-bottom: 0; padding-left: 24px; padding-right: 24px;"><a href="https://click.convertkit-mail4.com/r8u3l3erqqhoh3mk7okt2hdel5666h7h4n26/6qhehoul7eoz5obo/aHR0cHM6Ly93d3cucWF3b2xmLmNvbT91dG1fY2FtcGFpZ249QUNRX0FsbF9EZW1vX0NvbnZlcnNpb25zX19OZXdzbGV0dGVyQXVkaWVuY2VfLV9OZXdzbGV0dGVyXzgwUGVyY2VudFRlc3RDb3ZlcmFnZUluNE1vbnRoc18yMDI1MDkyMy1Ob25lX0V4cGVyaW1lbnQtRkFMU0UmdXRtX2NvbnRlbnQ9ODBQZXJjZW50VGVzdENvdmVyYWdlSW40TW9udGhzX0dldEFQZXJzb25hbGl6ZWREZW1vX05vbmVfSGVhZGxpbmUlM0FHZXQ4MFBlcmNlbnRBdXRvbWF0ZWRUZXN0Q292ZXJhZ2VJbjRNb250aHNfX19fTmV3c2xldHRlci1QcmltYXJ5UGxhY2VtZW50XzIwMjUwOTIzX3YxXyZ1dG1fbWVkaXVtPW5ld3NsZXR0ZXImdXRtX3NvdXJjZT1ieXRlcyZ1dG1fdGVybT1oZWFkbGluZS1HZXQ4MFBlcmNlbnRBdXRvbWF0ZWRUZXN0Q292ZXJhZ2VJbjRNb250aHM=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1789096379">Get 80% automated test coverage in 4 months</a></h3>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">…with zero effort from your team.</p>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">That’s what QA Wolf did for Brilliant – helping them detect 8-10 bugs per month, while reducing their QA cycles from 24 hours to under 5 minutes (<a href="https://click.convertkit-mail4.com/r8u3l3erqqhoh3mk7okt2hdel5666h7h4n26/kkhmh2unlvmr54ul/aHR0cHM6Ly93d3cucWF3b2xmLmNvbS9jYXNlLXN0dWRpZXMvYnJpbGxpYW50P3V0bV9jYW1wYWlnbj1BQ1FfQWxsX0RlbW9fQ29udmVyc2lvbnNfX05ld3NsZXR0ZXJBdWRpZW5jZV8tX05ld3NsZXR0ZXJfODBQZXJjZW50VGVzdENvdmVyYWdlSW40TW9udGhzXzIwMjUwOTIzLU5vbmVfRXhwZXJpbWVudC1GQUxTRSZ1dG1fY29udGVudD04MFBlcmNlbnRUZXN0Q292ZXJhZ2VJbjRNb250aHNfR2V0QVBlcnNvbmFsaXplZERlbW9fTm9uZV9IZWFkbGluZSUzQUdldDgwUGVyY2VudEF1dG9tYXRlZFRlc3RDb3ZlcmFnZUluNE1vbnRoc19fX19OZXdzbGV0dGVyLVByaW1hcnlQbGFjZW1lbnRfMjAyNTA5MjNfdjFfJnV0bV9tZWRpdW09bmV3c2xldHRlciZ1dG1fc291cmNlPWJ5dGVzJnV0bV90ZXJtPWJvZHktV2F0Y2hDYXNlU3R1ZHk=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1789096380">watch case study</a>).</p>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">And they can do it for your team too. Here’s how:</p>
<ul>
<li>Their engineers build out a <a href="https://click.convertkit-mail4.com/r8u3l3erqqhoh3mk7okt2hdel5666h7h4n26/58hvh8ugm27qn3a6/aHR0cHM6Ly93d3cucWF3b2xmLmNvbS9ob3ctaXQtd29ya3M_dXRtX2NhbXBhaWduPUFDUV9BbGxfRGVtb19Db252ZXJzaW9uc19fTmV3c2xldHRlckF1ZGllbmNlXy1fTmV3c2xldHRlcl84MFBlcmNlbnRUZXN0Q292ZXJhZ2VJbjRNb250aHNfMjAyNTA5MjMtTm9uZV9FeHBlcmltZW50LUZBTFNFJnV0bV9jb250ZW50PTgwUGVyY2VudFRlc3RDb3ZlcmFnZUluNE1vbnRoc19HZXRBUGVyc29uYWxpemVkRGVtb19Ob25lX0hlYWRsaW5lJTNBR2V0ODBQZXJjZW50QXV0b21hdGVkVGVzdENvdmVyYWdlSW40TW9udGhzX19fX05ld3NsZXR0ZXItUHJpbWFyeVBsYWNlbWVudF8yMDI1MDkyM192MV8mdXRtX21lZGl1bT1uZXdzbGV0dGVyJnV0bV9zb3VyY2U9Ynl0ZXMmdXRtX3Rlcm09Ym9keS1GdWxsT3V0bGluZU9mWW91ckFwcA==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1789096381">full outline of your app</a>, prioritizing test cases by need and value</li>
<li>They run all your tests in 100% parallel, so you get pass/fail results within 3 minutes</li>
<li>They update and maintain your test suite as your app evolves</li>
</ul>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;"><a href="https://click.convertkit-mail4.com/r8u3l3erqqhoh3mk7okt2hdel5666h7h4n26/25h2h9u32wd686b3/aHR0cHM6Ly93d3cucWF3b2xmLmNvbT91dG1fY2FtcGFpZ249QUNRX0FsbF9EZW1vX0NvbnZlcnNpb25zX19OZXdzbGV0dGVyQXVkaWVuY2VfLV9OZXdzbGV0dGVyXzgwUGVyY2VudFRlc3RDb3ZlcmFnZUluNE1vbnRoc18yMDI1MDkyMy1Ob25lX0V4cGVyaW1lbnQtRkFMU0UmdXRtX2NvbnRlbnQ9ODBQZXJjZW50VGVzdENvdmVyYWdlSW40TW9udGhzX0dldEFQZXJzb25hbGl6ZWREZW1vX05vbmVfSGVhZGxpbmUlM0FHZXQ4MFBlcmNlbnRBdXRvbWF0ZWRUZXN0Q292ZXJhZ2VJbjRNb250aHNfX19fTmV3c2xldHRlci1QcmltYXJ5UGxhY2VtZW50XzIwMjUwOTIzX3YxXyZ1dG1fbWVkaXVtPW5ld3NsZXR0ZXImdXRtX3NvdXJjZT1ieXRlcyZ1dG1fdGVybT1jdGEtR2V0QVBlcnNvbmFsaXplZERlbW9Gb3JZb3VyVGVhbQ==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1789096382">Get a personalized demo for your team</a> – and see why Napster’s Engineering Director said, “It would take 4 people to build this much coverage, and they’d never do it this quickly.”</p>
<hr style="border: 0; border-bottom: 5px solid; border-color: #f5f5f5; margin-bottom: 100px; margin-top: 100px;">
<div style="text-align:center;margin-bottom:36px">
<img width="140" src="https://bytes.dev/images/content/pop-quiz.png" alt="Pop Quiz logo" style="max-width: 100%;"><h2 style="font-family: Paytone One, sans-serif; font-size: 28px; margin-top: 10px; text-transform: uppercase;">Pop Quiz</h2>
<div class="section-presenter" style="margin-bottom:50px;margin-top:15px">
<h4 style="font-size: 19px; margin-bottom: 0; padding-left: 24px; padding-right: 24px;">Sponsored by <a href="https://click.convertkit-mail4.com/r8u3l3erqqhoh3mk7okt2hdel5666h7h4n26/qvh8h8udrpnz4wul/aHR0cHM6Ly9zZW50cnkuaW8vcHJvZHVjdC9zZWVyLz91dG1fY2FtcGFpZ249c2Vlci1meTI2cTMtc2VlcmxhdW5jaCZ1dG1fY29udGVudD1uZXdzbGV0dGVyLXNlZXItcHJlc2VudGluZy1zcG9uc29yLWxlYXJubW9yZSZ1dG1fbWVkaXVtPXBhaWQtY29tbXVuaXR5JnV0bV9zb3VyY2U9Ynl0ZXM=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1789096383">Sentry</a>
</h4>
<p style="font-family: Outfit, sans-serif; font-size: 16px; line-height: 1.5; margin-top: 5px; padding-left: 24px; padding-right: 24px;"><em>Their new <a href="https://click.convertkit-mail4.com/r8u3l3erqqhoh3mk7okt2hdel5666h7h4n26/qvh8h8udrpnz4wul/aHR0cHM6Ly9zZW50cnkuaW8vcHJvZHVjdC9zZWVyLz91dG1fY2FtcGFpZ249c2Vlci1meTI2cTMtc2VlcmxhdW5jaCZ1dG1fY29udGVudD1uZXdzbGV0dGVyLXNlZXItcHJlc2VudGluZy1zcG9uc29yLWxlYXJubW9yZSZ1dG1fbWVkaXVtPXBhaWQtY29tbXVuaXR5JnV0bV9zb3VyY2U9Ynl0ZXM=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1789096383">Seer AI agent</a> pulls in all of Sentry’s logs, traces, and other context to automatically debug the root cause of an issue and open a PR with a fix.</em></p>
</div>
</div>
<pre class="language-js" style="background-color: #f9f9f9; border: 1px solid #f9f9f9; border-radius: 8px; color: #231F20; overflow: auto; padding: 24px;"><code class="language-js" style="font-size: 14px;"><span class="token keyword" style="color: #f38ba3; font-size: 14px;">function</span> <span class="token function" style="color: #9d7dce; font-size: 14px;">p1</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span> <span class="token punctuation" style="color: #231F20; font-size: 14px;">{</span>
<span class="token keyword" style="color: #f38ba3; font-size: 14px;">return</span> <span class="token keyword" style="color: #f38ba3; font-size: 14px;">new</span> <span class="token class-name" style="color: #12b5e5; font-size: 14px;">Promise</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token parameter" style="color: #f38ba3; font-size: 14px;">resolve<span class="token punctuation" style="color: #231F20; font-size: 14px;">,</span> reject</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span> <span class="token operator" style="color: #12b5e5; font-size: 14px;">=></span> <span class="token punctuation" style="color: #231F20; font-size: 14px;">{</span>
<span class="token function" style="color: #9d7dce; font-size: 14px;">setTimeout</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span> <span class="token operator" style="color: #12b5e5; font-size: 14px;">=></span> <span class="token function" style="color: #9d7dce; font-size: 14px;">reject</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token string" style="color: #f99157; font-size: 14px;">"Error in p1"</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">,</span> <span class="token number" style="color: #fcba28; font-size: 14px;">1000</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">;</span>
<span class="token punctuation" style="color: #231F20; font-size: 14px;">}</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">.</span><span class="token function" style="color: #9d7dce; font-size: 14px;">catch</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token parameter" style="color: #f38ba3; font-size: 14px;">error</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span> <span class="token operator" style="color: #12b5e5; font-size: 14px;">=></span> <span class="token punctuation" style="color: #231F20; font-size: 14px;">{</span>
console<span class="token punctuation" style="color: #231F20; font-size: 14px;">.</span><span class="token function" style="color: #9d7dce; font-size: 14px;">error</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span>error<span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">;</span>
<span class="token punctuation" style="color: #231F20; font-size: 14px;">}</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span>
<span class="token punctuation" style="color: #231F20; font-size: 14px;">}</span>
<span class="token keyword" style="color: #f38ba3; font-size: 14px;">function</span> <span class="token function" style="color: #9d7dce; font-size: 14px;">p2</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span> <span class="token punctuation" style="color: #231F20; font-size: 14px;">{</span>
<span class="token keyword" style="color: #f38ba3; font-size: 14px;">return</span> <span class="token keyword" style="color: #f38ba3; font-size: 14px;">new</span> <span class="token class-name" style="color: #12b5e5; font-size: 14px;">Promise</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token parameter" style="color: #f38ba3; font-size: 14px;">resolve</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span> <span class="token operator" style="color: #12b5e5; font-size: 14px;">=></span> <span class="token punctuation" style="color: #231F20; font-size: 14px;">{</span>
<span class="token function" style="color: #9d7dce; font-size: 14px;">setTimeout</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span> <span class="token operator" style="color: #12b5e5; font-size: 14px;">=></span> <span class="token function" style="color: #9d7dce; font-size: 14px;">resolve</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token string" style="color: #f99157; font-size: 14px;">"p2 resolved"</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">,</span> <span class="token number" style="color: #fcba28; font-size: 14px;">1000</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">;</span>
<span class="token punctuation" style="color: #231F20; font-size: 14px;">}</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">;</span>
<span class="token punctuation" style="color: #231F20; font-size: 14px;">}</span>
<span class="token keyword" style="color: #f38ba3; font-size: 14px;">function</span> <span class="token function" style="color: #9d7dce; font-size: 14px;">pAll</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span> <span class="token punctuation" style="color: #231F20; font-size: 14px;">{</span>
Promise<span class="token punctuation" style="color: #231F20; font-size: 14px;">.</span><span class="token function" style="color: #9d7dce; font-size: 14px;">all</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">[</span><span class="token function" style="color: #9d7dce; font-size: 14px;">p2</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">,</span> <span class="token function" style="color: #9d7dce; font-size: 14px;">p1</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">]</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span>
<span class="token punctuation" style="color: #231F20; font-size: 14px;">.</span><span class="token function" style="color: #9d7dce; font-size: 14px;">then</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token parameter" style="color: #f38ba3; font-size: 14px;">results</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span> <span class="token operator" style="color: #12b5e5; font-size: 14px;">=></span> <span class="token punctuation" style="color: #231F20; font-size: 14px;">{</span>
console<span class="token punctuation" style="color: #231F20; font-size: 14px;">.</span><span class="token function" style="color: #9d7dce; font-size: 14px;">log</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token string" style="color: #f99157; font-size: 14px;">"All data resolved:"</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">,</span> results<span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">;</span>
<span class="token punctuation" style="color: #231F20; font-size: 14px;">}</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span>
<span class="token punctuation" style="color: #231F20; font-size: 14px;">.</span><span class="token function" style="color: #9d7dce; font-size: 14px;">catch</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token parameter" style="color: #f38ba3; font-size: 14px;">error</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span> <span class="token operator" style="color: #12b5e5; font-size: 14px;">=></span> <span class="token punctuation" style="color: #231F20; font-size: 14px;">{</span>
console<span class="token punctuation" style="color: #231F20; font-size: 14px;">.</span><span class="token function" style="color: #9d7dce; font-size: 14px;">error</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token string" style="color: #f99157; font-size: 14px;">"Error resolving data:"</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">,</span> error<span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">;</span>
<span class="token punctuation" style="color: #231F20; font-size: 14px;">}</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">;</span>
<span class="token punctuation" style="color: #231F20; font-size: 14px;">}</span>
<span class="token function" style="color: #9d7dce; font-size: 14px;">pAll</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">;</span>
</code></pre>
<hr style="border: 0; border-bottom: 5px solid; border-color: #f5f5f5; margin-bottom: 100px; margin-top: 100px;">
<div style="text-align:center;margin-bottom:36px">
<img width="110" src="https://bytes.dev/images/content/cool-bits.png" alt="Cool Bits logo" style="max-width: 100%;"><h2 style="font-family: Paytone One, sans-serif; font-size: 28px; margin-top: 10px; text-transform: uppercase;">Cool Bits</h2>
</div>
<ol>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">Cloudflare just announced <a href="https://click.convertkit-mail4.com/r8u3l3erqqhoh3mk7okt2hdel5666h7h4n26/g3hnhwum3wprlwsr/aHR0cHM6Ly9ibG9nLmNsb3VkZmxhcmUuY29tL2NhcG53ZWItamF2YXNjcmlwdC1ycGMtbGlicmFyeS8=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1789096384">Cap’n Web</a>, a new RPC system for browsers and web servers in pure TypeScript with no schemas. It doesn’t taste quite as sweet as <em>Cap’n Crunch Oops All Berries</em>, but at least it won’t cut up the roof of your mouth as much.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">Dex Horthy wrote about <a href="https://click.convertkit-mail4.com/r8u3l3erqqhoh3mk7okt2hdel5666h7h4n26/9qhzhdudpr906mf9/aHR0cHM6Ly9naXRodWIuY29tL2h1bWFubGF5ZXIvYWR2YW5jZWQtY29udGV4dC1lbmdpbmVlcmluZy1mb3ItY29kaW5nLWFnZW50cy9ibG9iL21haW4vYWNlLWZjYS5tZA==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1789096385">getting AI to work in complex codebases</a>, beyond just asking Claude to “make no mistakes this time.”</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">Jeff Escalante wrote this <a href="https://click.convertkit-mail4.com/r8u3l3erqqhoh3mk7okt2hdel5666h7h4n26/3ohphdu37gz025fr/aHR0cHM6Ly9nby5jbGVyay5jb20vVzN5MjdBNA==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1789096386">comprehensive guide to authentication security in web applications</a> for the Clerk blog. It shows the top auth vulnerabilities being exposed by attackers and how to fix them in your app <em>before</em> something bad happens. [sponsored]</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">Piotr Grabowski created <a href="https://click.convertkit-mail4.com/r8u3l3erqqhoh3mk7okt2hdel5666h7h4n26/n2hohquv30rmxzt6/aHR0cHM6Ly93d3cuYnVpbGRlci5pby9ibG9nL2hpcmUtZm9yLWRlc2lnbmluZy1pbi1jb2Rl" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1789096387">CompileBench</a> to see if AI can compile 22-year-old code.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">Tane Piper wrote this <a href="https://click.convertkit-mail4.com/r8u3l3erqqhoh3mk7okt2hdel5666h7h4n26/48hvh7umr8gvpxux/aHR0cHM6Ly90YW5lLmRldi8yMDI1LzA5L29oLW5vLW5vdC1hZ2Fpbi4uLi1hLW1lZGl0YXRpb24tb24tbnBtLXN1cHBseS1jaGFpbi1hdHRhY2tzLw==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1789096388">meditation on NPM supply chain attacks</a>. But we’re gonna need you to meditate a little harder, Tane, because we are getting absolutely rekt out here.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">CodeRabbit just launched <a href="https://click.convertkit-mail4.com/r8u3l3erqqhoh3mk7okt2hdel5666h7h4n26/wnh2h6uqw6gnklt7/aHR0cHM6Ly9jb2RlcmFiYml0LmxpbmsvYnl0ZXMtY2xp" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1789096389">CodeRabbit CLI</a>, which gives you senior-level code reviews in your terminal and acts as a quality gate for all the code that Claude, Codex, and Gemini write for you. [sponsored]</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">Chander Ramesh wrote about how and why his team at Motion are <a href="https://click.convertkit-mail4.com/r8u3l3erqqhoh3mk7okt2hdel5666h7h4n26/reh8h9um0zx43pf2/aHR0cHM6Ly9lbmdpbmVlcmluZy51c2Vtb3Rpb24uY29tL21vdmluZy1vZmYtb2YtdHlwZXNjcmlwdC1lN2JiMWYzYWQwOTE=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1789096390">moving off of TypeScript</a> and starting a blood feud with Anders Hejlsberg (jk).</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">Simona Cotin wrote about <a href="https://click.convertkit-mail4.com/r8u3l3erqqhoh3mk7okt2hdel5666h7h4n26/08hwhgu2drzv98hl/aHR0cHM6Ly9ibG9nLmFuZ3VsYXIuZGV2L2JleW9uZC10aGUtaG9yaXpvbi1ob3ctYW5ndWxhci1pcy1lbWJyYWNpbmctYWktZm9yLW5leHQtZ2VuLWFwcHMtN2E3ZWQ3MDZlMWEz" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1789096391">how Angular is embracing AI for next-gen apps</a></p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">Datadog’s <a href="https://click.convertkit-mail4.com/r8u3l3erqqhoh3mk7okt2hdel5666h7h4n26/vqh3hmuoprgl4xug/aHR0cHM6Ly93d3cuZGF0YWRvZ2hxLmNvbS9yZXNvdXJjZXMvZnJvbnRlbmQtZGV2ZWxvcGVyLWtpdC8_dXRtX2NhbXBhaWduPWRnLWNvcmVwbGF0Zm9ybS13dy1mcm9udGVuZC1kZXYta2l0LWJ5dGVzJnV0bV9tZWRpdW09bmV3c2xldHRlciZ1dG1fc291cmNlPWJ5dGVzZGV2" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1789096393">Front-end Developer Kit</a> gives you instant access to their best practices guide for testing and monitoring, a solutions brief on how to catch issues earlier, and lots more resources. [sponsored]</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">Ghostty creator, Mitchell Hashimoto wrote about how <del>Nosferatu</del> libghostty <a href="https://click.convertkit-mail4.com/r8u3l3erqqhoh3mk7okt2hdel5666h7h4n26/l2heh6ul37re4nc6/aHR0cHM6Ly9taXRjaGVsbGguY29tL3dyaXRpbmcvbGliZ2hvc3R0eS1pcy1jb21pbmc=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1789096394">is coming</a>.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">Addy Osmani wrote this deep dive on <a href="https://click.convertkit-mail4.com/r8u3l3erqqhoh3mk7okt2hdel5666h7h4n26/m2h7h6u38zev99fm/aHR0cHM6Ly9hZGR5by5zdWJzdGFjay5jb20vcC9ob3ctbW9kZXJuLWJyb3dzZXJzLXdvcms=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1789096395">how modern browsers work</a></p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">Speaking of which, <a href="https://click.convertkit-mail4.com/r8u3l3erqqhoh3mk7okt2hdel5666h7h4n26/dphehmue0n5vkwum/aHR0cHM6Ly93ZWJraXQub3JnL2Jsb2cvMTczMzMvd2Via2l0LWZlYXR1cmVzLWluLXNhZmFyaS0yNi0wLw==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1789096396">Safari 26.0</a> just came out with 75 new features, 3 deprecations, and 171 other improvements. Your move, <del>Arc Browser</del> <em>Jira Browser.</em></p>
</li>
</ol>
<hr style="border: 0; border-bottom: 5px solid; border-color: #f5f5f5; margin-bottom: 100px; margin-top: 100px;">
<div style="text-align:center;margin-bottom:36px">
<img width="140" src="https://bytes.dev/images/content/pop-quiz.png" alt="Pop Quiz logo" style="max-width: 100%;"><h2 style="font-family: Paytone One, sans-serif; font-size: 28px; margin-top: 10px; text-transform: uppercase;">Pop Quiz: Answer</h2>
<div class="section-presenter" style="margin-bottom:50px;margin-top:15px"><h4 style="font-size: 19px; margin-bottom: 0; padding-left: 24px; padding-right: 24px;">Sponsored by <a href="https://click.convertkit-mail4.com/r8u3l3erqqhoh3mk7okt2hdel5666h7h4n26/qvh8h8udrpnz4wul/aHR0cHM6Ly9zZW50cnkuaW8vcHJvZHVjdC9zZWVyLz91dG1fY2FtcGFpZ249c2Vlci1meTI2cTMtc2VlcmxhdW5jaCZ1dG1fY29udGVudD1uZXdzbGV0dGVyLXNlZXItcHJlc2VudGluZy1zcG9uc29yLWxlYXJubW9yZSZ1dG1fbWVkaXVtPXBhaWQtY29tbXVuaXR5JnV0bV9zb3VyY2U9Ynl0ZXM=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1789096383">Sentry</a>
</h4></div>
</div>
<pre class="language-js" style="background-color: #f9f9f9; border: 1px solid #f9f9f9; border-radius: 8px; color: #231F20; overflow: auto; padding: 24px;"><code class="language-js" style="font-size: 14px;"><span class="token keyword" style="color: #f38ba3; font-size: 14px;">function</span> <span class="token function" style="color: #9d7dce; font-size: 14px;">p1</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span> <span class="token punctuation" style="color: #231F20; font-size: 14px;">{</span>
<span class="token keyword" style="color: #f38ba3; font-size: 14px;">return</span> <span class="token keyword" style="color: #f38ba3; font-size: 14px;">new</span> <span class="token class-name" style="color: #12b5e5; font-size: 14px;">Promise</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token parameter" style="color: #f38ba3; font-size: 14px;">resolve<span class="token punctuation" style="color: #231F20; font-size: 14px;">,</span> reject</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span> <span class="token operator" style="color: #12b5e5; font-size: 14px;">=></span> <span class="token punctuation" style="color: #231F20; font-size: 14px;">{</span>
<span class="token function" style="color: #9d7dce; font-size: 14px;">setTimeout</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span> <span class="token operator" style="color: #12b5e5; font-size: 14px;">=></span> <span class="token function" style="color: #9d7dce; font-size: 14px;">reject</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token string" style="color: #f99157; font-size: 14px;">"Error in p1"</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">,</span> <span class="token number" style="color: #fcba28; font-size: 14px;">1000</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">;</span>
<span class="token punctuation" style="color: #231F20; font-size: 14px;">}</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">.</span><span class="token function" style="color: #9d7dce; font-size: 14px;">catch</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token parameter" style="color: #f38ba3; font-size: 14px;">error</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span> <span class="token operator" style="color: #12b5e5; font-size: 14px;">=></span> <span class="token punctuation" style="color: #231F20; font-size: 14px;">{</span>
console<span class="token punctuation" style="color: #231F20; font-size: 14px;">.</span><span class="token function" style="color: #9d7dce; font-size: 14px;">error</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span>error<span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">;</span>
<span class="token punctuation" style="color: #231F20; font-size: 14px;">}</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span>
<span class="token punctuation" style="color: #231F20; font-size: 14px;">}</span>
<span class="token keyword" style="color: #f38ba3; font-size: 14px;">function</span> <span class="token function" style="color: #9d7dce; font-size: 14px;">p2</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span> <span class="token punctuation" style="color: #231F20; font-size: 14px;">{</span>
<span class="token keyword" style="color: #f38ba3; font-size: 14px;">return</span> <span class="token keyword" style="color: #f38ba3; font-size: 14px;">new</span> <span class="token class-name" style="color: #12b5e5; font-size: 14px;">Promise</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token parameter" style="color: #f38ba3; font-size: 14px;">resolve</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span> <span class="token operator" style="color: #12b5e5; font-size: 14px;">=></span> <span class="token punctuation" style="color: #231F20; font-size: 14px;">{</span>
<span class="token function" style="color: #9d7dce; font-size: 14px;">setTimeout</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span> <span class="token operator" style="color: #12b5e5; font-size: 14px;">=></span> <span class="token function" style="color: #9d7dce; font-size: 14px;">resolve</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token string" style="color: #f99157; font-size: 14px;">"p2 resolved"</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">,</span> <span class="token number" style="color: #fcba28; font-size: 14px;">1000</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">;</span>
<span class="token punctuation" style="color: #231F20; font-size: 14px;">}</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">;</span>
<span class="token punctuation" style="color: #231F20; font-size: 14px;">}</span>
<span class="token keyword" style="color: #f38ba3; font-size: 14px;">function</span> <span class="token function" style="color: #9d7dce; font-size: 14px;">pAll</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span> <span class="token punctuation" style="color: #231F20; font-size: 14px;">{</span>
Promise<span class="token punctuation" style="color: #231F20; font-size: 14px;">.</span><span class="token function" style="color: #9d7dce; font-size: 14px;">all</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">[</span><span class="token function" style="color: #9d7dce; font-size: 14px;">p2</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">,</span> <span class="token function" style="color: #9d7dce; font-size: 14px;">p1</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">]</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span>
<span class="token punctuation" style="color: #231F20; font-size: 14px;">.</span><span class="token function" style="color: #9d7dce; font-size: 14px;">then</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token parameter" style="color: #f38ba3; font-size: 14px;">results</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span> <span class="token operator" style="color: #12b5e5; font-size: 14px;">=></span> <span class="token punctuation" style="color: #231F20; font-size: 14px;">{</span>
console<span class="token punctuation" style="color: #231F20; font-size: 14px;">.</span><span class="token function" style="color: #9d7dce; font-size: 14px;">log</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token string" style="color: #f99157; font-size: 14px;">"All data resolved:"</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">,</span> results<span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">;</span>
<span class="token punctuation" style="color: #231F20; font-size: 14px;">}</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span>
<span class="token punctuation" style="color: #231F20; font-size: 14px;">.</span><span class="token function" style="color: #9d7dce; font-size: 14px;">catch</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token parameter" style="color: #f38ba3; font-size: 14px;">error</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span> <span class="token operator" style="color: #12b5e5; font-size: 14px;">=></span> <span class="token punctuation" style="color: #231F20; font-size: 14px;">{</span>
console<span class="token punctuation" style="color: #231F20; font-size: 14px;">.</span><span class="token function" style="color: #9d7dce; font-size: 14px;">error</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token string" style="color: #f99157; font-size: 14px;">"Error resolving data:"</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">,</span> error<span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">;</span>
<span class="token punctuation" style="color: #231F20; font-size: 14px;">}</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">;</span>
<span class="token punctuation" style="color: #231F20; font-size: 14px;">}</span>
<span class="token function" style="color: #9d7dce; font-size: 14px;">pAll</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">;</span>
</code></pre>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">First, <code style="font-size: 14px;">Error in p1</code> is logged, then <code style="font-size: 14px;">[ 'p2 resolved', undefined ]</code> is logged. Since p1 catches the rejection, it doesn’t propagate to the <code style="font-size: 14px;">Promise.all</code> catch handler allowing <code style="font-size: 14px;">p2</code> to resolve. But, since <code style="font-size: 14px;">p1</code> doesn’t return anything, its result is <code style="font-size: 14px;">undefined</code>.</p>
<div style="text-align:center;padding-bottom:80px;padding-top:80px">
<div class="bg-alt" style="background-color: #f5f5f5; border-radius: 16px; margin-bottom: 40px; padding: 24px;"><div style="margin-top:-40px">
<img src="https://bytes.dev/images/bytes-icon.png" alt="Bytes" width="55px" style="max-width: 100%; width: 55px;"><h5 style="font-size:18px;font-weight:400;margin-bottom:24px">Want us to say nice things <br> about your company?</h5>
<div style="margin-bottom:16px"><a style="background-color: #FCBA28; border: 1px solid #231F20; border-radius: 100px; color: #231F20; font-size: 14px; font-weight: 600; padding: 8px 14px; text-decoration: none;" href="https://click.convertkit-mail4.com/r8u3l3erqqhoh3mk7okt2hdel5666h7h4n26/e0hph0u70o46e2b8/aHR0cHM6Ly9ieXRlcy5kZXYvYWR2ZXJ0aXNl" url-id="1789096397">Sponsor Bytes</a></div>
<div style="margin-bottom:20px"><a style="color: #FCBA28; font-size: 14px; font-weight: 600; text-decoration: underline;" href="https://click.convertkit-mail4.com/r8u3l3erqqhoh3mk7okt2hdel5666h7h4n26/7qh7h2u9o5zq84hz/aHR0cHM6Ly9ieXRlcy5kZXYvc2hhcmU=" url-id="1789096398">or share it</a></div>
<p style="font-family: Outfit, sans-serif; font-size: 14px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">Built with ❤️ by<!-- --> <a style="color: #ed203d; font-weight: 600; text-decoration: underline;" href="https://click.convertkit-mail4.com/r8u3l3erqqhoh3mk7okt2hdel5666h7h4n26/owhkhwuwrdopn4bv/aHR0cHM6Ly91aS5kZXY=" url-id="1789096399">ui.dev</a></p>
</div></div>
<p style="font-family: Outfit, sans-serif; font-size: 14px; line-height: 1.5; opacity: 0.5; padding-left: 24px; padding-right: 24px;">50 W Broadway Ste 333 PMB 51647 Salt Lake City, Utah 84101</p>
<div style="font-family:Papyrus, cursive"><a class="unsubscribe-link" href="https://click.convertkit-mail4.com/r8u3l3erqqhoh3mk7okt2hdel5666h7h4n26/z2hgh7ue3xwn73hp/aHR0cHM6Ly9ieXRlcy5kZXYvdW5zdWJzY3JpYmU=" style="color: #9B9890;" url-id="1789096400">Unsubscribe from Bytes</a></div>
</div>
</div></td>
<td style="border-collapse: collapse !important; word-break: normal;"></td>
</tr></tbody></table>
<span style="display: none"><a href="https://unsubscribe.convertkit-mail4.com/r8u3l3erqqhoh3mk7okt2hdel5666h7h4n26">Unsubscribe</a></span>
<!-- -->
<img src="https://open.convertkit-mail4.com/r8u3l3erqqhoh3mk7okt2hdel5666h7h4n26" alt="">
</body>
</html>