CINXE.COM
<!doctype html><html lang="en"><head><title data-rh="true">Mastering Futures in Scala: 3 Techniques to Avoid Blocking and Boost Efficiency | by Cleopatra Douglas | Nov, 2024 | Code Like A Girl</title><meta data-rh="true" charset="utf-8"/><meta data-rh="true" name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1,maximum-scale=1"/><meta data-rh="true" name="theme-color" content="#000000"/><meta data-rh="true" name="twitter:app:name:iphone" content="Medium"/><meta data-rh="true" name="twitter:app:id:iphone" content="828256236"/><meta data-rh="true" property="al:ios:app_name" content="Medium"/><meta data-rh="true" property="al:ios:app_store_id" content="828256236"/><meta data-rh="true" property="al:android:package" content="com.medium.reader"/><meta data-rh="true" property="fb:app_id" content="542599432471018"/><meta data-rh="true" property="og:site_name" content="Medium"/><meta data-rh="true" property="og:type" content="article"/><meta data-rh="true" property="article:published_time" content="2024-11-05T13:16:02.511Z"/><meta data-rh="true" name="title" content="Mastering Futures in Scala: 3 Techniques to Avoid Blocking and Boost Efficiency | by Cleopatra Douglas | Nov, 2024 | Code Like A Girl"/><meta data-rh="true" property="og:title" content="Mastering Futures in Scala: 3 Techniques to Avoid Blocking and Boost Efficiency"/><meta data-rh="true" property="al:android:url" content="medium://p/aeaa178bbf9a"/><meta data-rh="true" property="al:ios:url" content="medium://p/aeaa178bbf9a"/><meta data-rh="true" property="al:android:app_name" content="Medium"/><meta data-rh="true" name="description" content="As a backend engineer, I often build endpoints and call other external endpoints to perform tasks or augment data. As you can imagine, this involves having a lot of Futures when working with scala…"/><meta data-rh="true" property="og:description" content="Read Free — Here."/><meta data-rh="true" property="og:url" content="https://code.likeagirl.io/mastering-futures-in-scala-3-techniques-to-avoid-blocking-and-boost-efficiency-aeaa178bbf9a"/><meta data-rh="true" property="al:web:url" content="https://code.likeagirl.io/mastering-futures-in-scala-3-techniques-to-avoid-blocking-and-boost-efficiency-aeaa178bbf9a"/><meta data-rh="true" property="og:image" content="https://miro.medium.com/v2/resize:fit:732/1*i-3ZPps2Vxa1545Tic0WiQ.png"/><meta data-rh="true" property="article:author" content="https://cleopatradouglas.medium.com"/><meta data-rh="true" name="author" content="Cleopatra Douglas"/><meta data-rh="true" name="robots" content="index,noarchive,follow,max-image-preview:large"/><meta data-rh="true" name="referrer" content="unsafe-url"/><meta data-rh="true" property="twitter:title" content="Mastering Futures in Scala: 3 Techniques to Avoid Blocking and Boost Efficiency"/><meta data-rh="true" name="twitter:site" content="@Medium"/><meta data-rh="true" name="twitter:app:url:iphone" content="medium://p/aeaa178bbf9a"/><meta data-rh="true" property="twitter:description" content="Read Free — Here."/><meta data-rh="true" name="twitter:image:src" content="https://miro.medium.com/v2/resize:fit:732/1*i-3ZPps2Vxa1545Tic0WiQ.png"/><meta data-rh="true" name="twitter:card" content="summary_large_image"/><meta data-rh="true" name="twitter:creator" content="@succedor23"/><meta data-rh="true" name="twitter:label1" content="Reading time"/><meta data-rh="true" name="twitter:data1" content="3 min read"/><link data-rh="true" rel="icon" href="https://miro.medium.com/v2/resize:fill:256:256/1*DMSrHxhNUlnXIk2qSskkGg.png"/><link data-rh="true" rel="search" type="application/opensearchdescription+xml" title="Medium" href="/osd.xml"/><link data-rh="true" rel="apple-touch-icon" sizes="152x152" href="https://miro.medium.com/v2/resize:fill:304:304/10fd5c419ac61637245384e7099e131627900034828f4f386bdaa47a74eae156"/><link data-rh="true" rel="apple-touch-icon" sizes="120x120" href="https://miro.medium.com/v2/resize:fill:240:240/10fd5c419ac61637245384e7099e131627900034828f4f386bdaa47a74eae156"/><link data-rh="true" rel="apple-touch-icon" sizes="76x76" href="https://miro.medium.com/v2/resize:fill:152:152/10fd5c419ac61637245384e7099e131627900034828f4f386bdaa47a74eae156"/><link data-rh="true" rel="apple-touch-icon" sizes="60x60" href="https://miro.medium.com/v2/resize:fill:120:120/10fd5c419ac61637245384e7099e131627900034828f4f386bdaa47a74eae156"/><link data-rh="true" rel="mask-icon" href="https://miro.medium.com/v2/resize:fill:1000:1000/7*GAOKVe--MXbEJmV9230oOQ.png" color="#171717"/><link data-rh="true" id="glyph_preload_link" rel="preload" as="style" type="text/css" href="https://glyph.medium.com/css/unbound.css"/><link data-rh="true" id="glyph_link" rel="stylesheet" type="text/css" href="https://glyph.medium.com/css/unbound.css"/><link data-rh="true" rel="author" href="https://cleopatradouglas.medium.com"/><link data-rh="true" rel="canonical" href="https://code.likeagirl.io/mastering-futures-in-scala-3-techniques-to-avoid-blocking-and-boost-efficiency-aeaa178bbf9a"/><link data-rh="true" rel="alternate" href="android-app://com.medium.reader/https/medium.com/p/aeaa178bbf9a"/><script data-rh="true" type="application/ld+json">{"@context":"http:\u002F\u002Fschema.org","@type":"NewsArticle","image":["https:\u002F\u002Fmiro.medium.com\u002Fv2\u002Fresize:fit:1200\u002F1*i-3ZPps2Vxa1545Tic0WiQ.png"],"url":"https:\u002F\u002Fcode.likeagirl.io\u002Fmastering-futures-in-scala-3-techniques-to-avoid-blocking-and-boost-efficiency-aeaa178bbf9a","dateCreated":"2024-11-05T13:16:02.511Z","datePublished":"2024-11-05T13:16:02.511Z","dateModified":"2024-11-14T00:39:01.919Z","headline":"Mastering Futures in Scala: 3 Techniques to Avoid Blocking and Boost Efficiency","name":"Mastering Futures in Scala: 3 Techniques to Avoid Blocking and Boost Efficiency","description":"As a backend engineer, I often build endpoints and call other external endpoints to perform tasks or augment data. As you can imagine, this involves having a lot of Futures when working with scala…","identifier":"aeaa178bbf9a","author":{"@type":"Person","name":"Cleopatra Douglas","url":"https:\u002F\u002Fcleopatradouglas.medium.com"},"creator":["Cleopatra Douglas"],"publisher":{"@type":"Organization","name":"Code Like A Girl","url":"code.likeagirl.io","logo":{"@type":"ImageObject","width":500,"height":60,"url":"https:\u002F\u002Fmiro.medium.com\u002Fv2\u002Fresize:fit:1000\u002F1*7c38e-HQi4NrKrfcuftX7g.png"}},"mainEntityOfPage":"https:\u002F\u002Fcode.likeagirl.io\u002Fmastering-futures-in-scala-3-techniques-to-avoid-blocking-and-boost-efficiency-aeaa178bbf9a","isAccessibleForFree":"False","hasPart":{"@type":"WebPageElement","isAccessibleForFree":"False","cssSelector":".meteredContent"}}</script><style type="text/css" data-fela-rehydration="535" data-fela-type="STATIC">html{box-sizing:border-box;-webkit-text-size-adjust:100%}*, *:before, *:after{box-sizing:inherit}body{margin:0;padding:0;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;color:rgba(0,0,0,0.8);position:relative;min-height:100vh}h1, h2, h3, h4, h5, h6, dl, dd, ol, ul, menu, figure, blockquote, p, pre, form{margin:0}menu, ol, ul{padding:0;list-style:none;list-style-image:none}main{display:block}a{color:inherit;text-decoration:none}a, button, input{-webkit-tap-highlight-color:transparent}img, svg{vertical-align:middle}button{background:transparent;overflow:visible}button, input, optgroup, select, textarea{margin:0}:root{--reach-tabs:1;--reach-menu-button:1}#speechify-root{font-family:Sohne, sans-serif}div[data-popper-reference-hidden="true"]{visibility:hidden;pointer-events:none}.grecaptcha-badge{visibility:hidden} /*XCode style (c) Angel Garcia <angelgarcia.mail@gmail.com>*/.hljs {background: #fff;color: black; }/* Gray DOCTYPE selectors like WebKit */ .xml .hljs-meta {color: #c0c0c0; }.hljs-comment, .hljs-quote {color: #007400; }.hljs-tag, .hljs-attribute, .hljs-keyword, .hljs-selector-tag, .hljs-literal, .hljs-name {color: #aa0d91; }.hljs-variable, .hljs-template-variable {color: #3F6E74; }.hljs-code, .hljs-string, .hljs-meta .hljs-string {color: #c41a16; }.hljs-regexp, .hljs-link {color: #0E0EFF; }.hljs-title, .hljs-symbol, .hljs-bullet, .hljs-number {color: #1c00cf; }.hljs-section, .hljs-meta {color: #643820; }.hljs-title.class_, .hljs-class .hljs-title, .hljs-type, .hljs-built_in, .hljs-params {color: #5c2699; }.hljs-attr {color: #836C28; }.hljs-subst {color: #000; }.hljs-formula {background-color: #eee;font-style: italic; }.hljs-addition {background-color: #baeeba; }.hljs-deletion {background-color: #ffc8bd; }.hljs-selector-id, .hljs-selector-class {color: #9b703f; }.hljs-doctag, .hljs-strong {font-weight: bold; }.hljs-emphasis {font-style: italic; } </style><style type="text/css" data-fela-rehydration="535" data-fela-type="KEYFRAME">@-webkit-keyframes k1{0%{opacity:0.8}50%{opacity:0.5}100%{opacity:0.8}}@-moz-keyframes k1{0%{opacity:0.8}50%{opacity:0.5}100%{opacity:0.8}}@keyframes k1{0%{opacity:0.8}50%{opacity:0.5}100%{opacity:0.8}}</style><style type="text/css" data-fela-rehydration="535" data-fela-type="RULE">.a{font-family:medium-content-sans-serif-font, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif}.b{font-weight:400}.c{background-color:rgba(255, 255, 255, 1)}.l{display:block}.m{position:sticky}.n{top:0}.o{z-index:500}.p{padding:0 24px}.q{align-items:center}.r{border-bottom:solid 1px #F2F2F2}.y{height:41px}.z{line-height:20px}.ab{display:flex}.ac{height:57px}.ae{flex:1 0 auto}.af{color:inherit}.ag{fill:inherit}.ah{font-size:inherit}.ai{border:inherit}.aj{font-family:inherit}.ak{letter-spacing:inherit}.al{font-weight:inherit}.am{padding:0}.an{margin:0}.ao{cursor:pointer}.ap:disabled{cursor:not-allowed}.aq:disabled{color:#6B6B6B}.ar:disabled{fill:#6B6B6B}.au{width:auto}.av path{fill:#242424}.aw{height:25px}.ax{margin-left:16px}.ay{border:none}.az{border-radius:20px}.ba{width:240px}.bb{background:#F9F9F9}.bc path{fill:#6B6B6B}.be{outline:none}.bf{font-family:sohne, "Helvetica Neue", Helvetica, Arial, sans-serif}.bg{font-size:14px}.bh{width:100%}.bi{padding:10px 20px 10px 0}.bj{background-color:transparent}.bk{color:#242424}.bl::placeholder{color:#6B6B6B}.bm{display:inline-block}.bn{margin-left:12px}.bo{margin-right:12px}.bp{border-radius:4px}.bq{margin-left:24px}.br{height:24px}.bx{background-color:#F9F9F9}.by{border-radius:50%}.bz{height:32px}.ca{width:32px}.cb{justify-content:center}.ch{max-width:680px}.ci{min-width:0}.cj{animation:k1 1.2s ease-in-out infinite}.ck{height:100vh}.cl{margin-bottom:16px}.cm{margin-top:48px}.cn{align-items:flex-start}.co{flex-direction:column}.cp{justify-content:space-between}.cq{margin-bottom:24px}.cw{width:80%}.cx{background-color:#F2F2F2}.dd{height:44px}.de{width:44px}.df{margin:auto 0}.dg{margin-bottom:4px}.dh{height:16px}.di{width:120px}.dj{width:80px}.dp{margin-bottom:8px}.dq{width:96%}.dr{width:98%}.ds{width:81%}.dt{margin-left:8px}.du{color:#6B6B6B}.dv{font-size:13px}.dw{height:100%}.ep{color:#FFFFFF}.eq{fill:#FFFFFF}.er{background:rgba(109, 135, 179, 1)}.es{border-color:rgba(109, 135, 179, 1)}.ew:disabled{cursor:inherit !important}.ex:disabled{opacity:0.3}.ey:disabled:hover{background:rgba(109, 135, 179, 1)}.ez:disabled:hover{border-color:rgba(109, 135, 179, 1)}.fa{border-radius:99em}.fb{border-width:1px}.fc{border-style:solid}.fd{box-sizing:border-box}.fe{text-decoration:none}.ff{text-align:center}.fi{margin-right:32px}.fj{position:relative}.fk{fill:#6B6B6B}.fn{background:transparent}.fo svg{margin-left:4px}.fp svg{fill:#6B6B6B}.fr{box-shadow:inset 0 0 0 1px rgba(0, 0, 0, 0.05)}.fs{position:absolute}.fz{margin:0 24px}.gd{background:rgba(255, 255, 255, 1)}.ge{border:1px solid #F2F2F2}.gf{box-shadow:0 1px 4px #F2F2F2}.gg{max-height:100vh}.gh{overflow-y:auto}.gi{left:0}.gj{top:calc(100vh + 100px)}.gk{bottom:calc(100vh + 100px)}.gl{width:10px}.gm{pointer-events:none}.gs{gap:12px}.gt{margin-right:4px}.gu{margin-top:2px}.gv{box-sizing:content-box}.gw{word-break:break-word}.gx{word-wrap:break-word}.gy:after{display:block}.gz:after{content:""}.ha:after{clear:both}.hb{line-height:1.23}.hc{letter-spacing:0}.hd{font-style:normal}.he{font-weight:700}.hz{margin-top:0px}.if{align-items:baseline}.ig{width:48px}.ih{height:48px}.ii{border:2px solid rgba(255, 255, 255, 1)}.ij{z-index:0}.ik{box-shadow:none}.il{border:1px solid rgba(0, 0, 0, 0.05)}.im{margin-left:-12px}.in{width:28px}.io{height:28px}.ip{z-index:1}.iq{width:24px}.ir{margin-bottom:2px}.is{flex-wrap:nowrap}.it{font-size:16px}.iu{line-height:24px}.iw{margin:0 8px}.ix{display:inline}.iy{color:rgba(109, 135, 179, 1)}.iz{fill:rgba(109, 135, 179, 1)}.jc{flex:0 0 auto}.jf{flex-wrap:wrap}.ji{white-space:pre-wrap}.jj{overflow:hidden}.jk{max-height:20px}.jl{text-overflow:ellipsis}.jm{display:-webkit-box}.jn{-webkit-line-clamp:1}.jo{-webkit-box-orient:vertical}.jp{word-break:break-all}.jr{padding-left:8px}.js{padding-right:8px}.kt> *{flex-shrink:0}.ku{overflow-x:scroll}.kv::-webkit-scrollbar{display:none}.kw{scrollbar-width:none}.kx{-ms-overflow-style:none}.ky{width:74px}.kz{flex-direction:row}.la{z-index:2}.ld{-webkit-user-select:none}.le{border:0}.lf{fill:rgba(117, 117, 117, 1)}.li{outline:0}.lj{user-select:none}.lk> svg{pointer-events:none}.lt{cursor:progress}.lu{opacity:1}.lv{padding:4px 0}.ly{width:16px}.ma{display:inline-flex}.mg{max-width:100%}.mh{padding:8px 2px}.mi svg{color:#6B6B6B}.mz{margin-left:auto}.na{margin-right:auto}.nb{max-width:732px}.nc{clear:both}.ne{cursor:zoom-in}.nf{z-index:auto}.nh{height:auto}.ni{line-height:1.58}.nj{letter-spacing:-0.004em}.nk{font-family:source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif}.of{margin-bottom:-0.46em}.og{font-style:italic}.oh{text-decoration:underline}.oi{line-height:1.18}.oj{letter-spacing:-0.022em}.ok{font-weight:600}.pa{margin-bottom:-0.31em}.pg{padding:2px 4px}.ph{font-size:75%}.pi> strong{font-family:inherit}.pj{font-family:source-code-pro, Menlo, Monaco, "Courier New", Courier, monospace}.pp{overflow-x:auto}.pq{padding:32px}.pr{border:1px solid #E5E5E5}.ps{line-height:1.4}.pt{margin-top:-0.2em}.pu{margin-bottom:-0.2em}.pv{white-space:pre}.pw{min-width:fit-content}.px{border-top:none}.py{margin-bottom:14px}.pz{height:52px}.qa{max-height:52px}.qb{position:static}.qd{max-width:155px}.qj{margin-right:20px}.qp{height:0px}.qq{margin-bottom:40px}.qr{margin-bottom:48px}.rf{border-radius:2px}.rh{height:64px}.ri{width:64px}.rj{align-self:flex-end}.rk{color:rgba(255, 255, 255, 1)}.rl{padding:8px 16px}.rm{fill:rgba(255, 255, 255, 1)}.rn{background:rgba(25, 25, 25, 1)}.ro{border-color:rgba(25, 25, 25, 1)}.rr:disabled{opacity:0.1}.rs:disabled:hover{background:rgba(25, 25, 25, 1)}.rt:disabled:hover{border-color:rgba(25, 25, 25, 1)}.ru{flex:1 1 auto}.sa{padding-right:4px}.sb{font-weight:500}.si{margin-top:8px}.sj{margin-top:16px}.sk{margin-bottom:54px}.td{gap:18px}.te{fill:rgba(61, 61, 61, 1)}.tl{border-bottom:solid 1px #E5E5E5}.tm{margin-top:72px}.tn{padding:24px 0}.to{margin-bottom:0px}.tp{margin-right:16px}.as:hover:not(:disabled){color:rgba(25, 25, 25, 1)}.at:hover:not(:disabled){fill:rgba(25, 25, 25, 1)}.et:hover{background:rgba(96, 116, 151, 1)}.eu:hover{border-color:rgba(96, 116, 151, 1)}.ev:hover{cursor:pointer}.fl:hover{color:#242424}.fm:hover{fill:#242424}.fq:hover svg{fill:#242424}.ft:hover{background-color:rgba(0, 0, 0, 0.1)}.iv:hover{text-decoration:underline}.ja:hover:not(:disabled){color:rgba(96, 116, 151, 1)}.jb:hover:not(:disabled){fill:rgba(96, 116, 151, 1)}.lh:hover{fill:rgba(8, 8, 8, 1)}.lw:hover{fill:#000000}.lx:hover p{color:#000000}.lz:hover{color:#000000}.mj:hover svg{color:#000000}.rg:hover{background-color:none}.rp:hover{background:#000000}.rq:hover{border-color:#242424}.tf:hover{fill:rgba(25, 25, 25, 1)}.bd:focus-within path{fill:#242424}.lg:focus{fill:rgba(8, 8, 8, 1)}.mk:focus svg{color:#000000}.ng:focus{transform:scale(1.01)}.ll:active{border-style:none}</style><style type="text/css" data-fela-rehydration="535" data-fela-type="RULE" media="all and (min-width: 1080px)">.d{display:none}.bw{width:64px}.cg{margin:0 64px}.cv{height:48px}.dc{margin-bottom:52px}.do{margin-bottom:48px}.ef{font-size:14px}.eg{line-height:20px}.em{font-size:13px}.eo{padding:5px 12px}.fh{display:flex}.fy{margin-bottom:68px}.gc{max-width:680px}.gr{margin-top:40px}.hv{font-size:42px}.hw{margin-bottom:32px}.hx{line-height:52px}.hy{letter-spacing:-0.011em}.ie{align-items:center}.kf{border-top:solid 1px #F2F2F2}.kg{border-bottom:solid 1px #F2F2F2}.kh{margin:32px 0 0}.ki{padding:3px 8px}.kr> *{margin-right:24px}.ks> :last-child{margin-right:0}.ls{margin-top:0px}.mf{margin:0}.ob{font-size:20px}.oc{margin-top:2.14em}.od{line-height:32px}.oe{letter-spacing:-0.003em}.ox{margin-top:1.72em}.oy{line-height:24px}.oz{letter-spacing:0}.pf{margin-top:0.94em}.po{margin-top:56px}.qi{display:inline-block}.qo{margin-bottom:104px}.qs{flex-direction:row}.qv{margin-bottom:0}.qw{margin-right:20px}.rv{max-width:500px}.sp{margin-bottom:72px}.ta{font-size:24px}.tb{line-height:30px}.tc{letter-spacing:-0.016em}.tk{padding-top:72px}</style><style type="text/css" data-fela-rehydration="535" data-fela-type="RULE" media="all and (max-width: 1079.98px)">.e{display:none}.lr{margin-top:0px}.qh{display:inline-block}</style><style type="text/css" data-fela-rehydration="535" data-fela-type="RULE" media="all and (max-width: 903.98px)">.f{display:none}.lq{margin-top:0px}.qg{display:inline-block}</style><style type="text/css" data-fela-rehydration="535" data-fela-type="RULE" media="all and (max-width: 727.98px)">.g{display:none}.lo{margin-top:0px}.lp{margin-right:0px}.qf{display:inline-block}</style><style type="text/css" data-fela-rehydration="535" data-fela-type="RULE" media="all and (max-width: 551.98px)">.h{display:none}.s{display:flex}.t{justify-content:space-between}.bs{width:24px}.cc{margin:0 24px}.cr{height:40px}.cy{margin-bottom:44px}.dk{margin-bottom:32px}.dx{font-size:13px}.dy{line-height:20px}.eh{padding:0px 8px 1px}.fu{margin-bottom:4px}.gn{margin-top:32px}.hf{font-size:32px}.hg{margin-bottom:24px}.hh{line-height:38px}.hi{letter-spacing:-0.014em}.ia{align-items:flex-start}.jd{flex-direction:column}.jg{margin-bottom:2px}.jt{margin:24px -24px 0}.ju{padding:0}.kj> *{margin-right:8px}.kk> :last-child{margin-right:24px}.lb{margin-left:0px}.lm{margin-top:0px}.ln{margin-right:0px}.mb{margin:0}.ml{border:1px solid #F2F2F2}.mm{border-radius:99em}.mn{padding:0px 16px 0px 12px}.mo{height:38px}.mp{align-items:center}.mr svg{margin-right:8px}.nl{font-size:18px}.nm{margin-top:1.56em}.nn{line-height:28px}.no{letter-spacing:-0.003em}.ol{font-size:16px}.om{margin-top:1.23em}.on{letter-spacing:0}.pb{margin-top:0.67em}.pk{margin-top:40px}.qe{display:inline-block}.qk{margin-bottom:96px}.rd{margin-bottom:20px}.re{margin-right:0}.rz{max-width:100%}.sc{font-size:24px}.sd{line-height:30px}.se{letter-spacing:-0.016em}.sl{margin-bottom:64px}.sq{font-size:20px}.sr{line-height:24px}.tg{padding-top:48px}.mq:hover{border-color:#E5E5E5}</style><style type="text/css" data-fela-rehydration="535" data-fela-type="RULE" media="all and (min-width: 904px) and (max-width: 1079.98px)">.i{display:none}.bv{width:64px}.cf{margin:0 64px}.cu{height:48px}.db{margin-bottom:52px}.dn{margin-bottom:48px}.ed{font-size:14px}.ee{line-height:20px}.ek{font-size:13px}.el{padding:5px 12px}.fg{display:flex}.fx{margin-bottom:68px}.gb{max-width:680px}.gq{margin-top:40px}.hr{font-size:42px}.hs{margin-bottom:32px}.ht{line-height:52px}.hu{letter-spacing:-0.011em}.id{align-items:center}.kb{border-top:solid 1px #F2F2F2}.kc{border-bottom:solid 1px #F2F2F2}.kd{margin:32px 0 0}.ke{padding:3px 8px}.kp> *{margin-right:24px}.kq> :last-child{margin-right:0}.me{margin:0}.nx{font-size:20px}.ny{margin-top:2.14em}.nz{line-height:32px}.oa{letter-spacing:-0.003em}.ou{margin-top:1.72em}.ov{line-height:24px}.ow{letter-spacing:0}.pe{margin-top:0.94em}.pn{margin-top:56px}.qn{margin-bottom:104px}.qt{flex-direction:row}.qx{margin-bottom:0}.qy{margin-right:20px}.rw{max-width:500px}.so{margin-bottom:72px}.sx{font-size:24px}.sy{line-height:30px}.sz{letter-spacing:-0.016em}.tj{padding-top:72px}</style><style type="text/css" data-fela-rehydration="535" data-fela-type="RULE" media="all and (min-width: 728px) and (max-width: 903.98px)">.j{display:none}.w{display:flex}.x{justify-content:space-between}.bu{width:64px}.ce{margin:0 48px}.ct{height:48px}.da{margin-bottom:52px}.dm{margin-bottom:48px}.eb{font-size:13px}.ec{line-height:20px}.ej{padding:0px 8px 1px}.fw{margin-bottom:68px}.ga{max-width:680px}.gp{margin-top:40px}.hn{font-size:42px}.ho{margin-bottom:32px}.hp{line-height:52px}.hq{letter-spacing:-0.011em}.ic{align-items:center}.jx{border-top:solid 1px #F2F2F2}.jy{border-bottom:solid 1px #F2F2F2}.jz{margin:32px 0 0}.ka{padding:3px 8px}.kn> *{margin-right:24px}.ko> :last-child{margin-right:0}.md{margin:0}.nt{font-size:20px}.nu{margin-top:2.14em}.nv{line-height:32px}.nw{letter-spacing:-0.003em}.or{margin-top:1.72em}.os{line-height:24px}.ot{letter-spacing:0}.pd{margin-top:0.94em}.pm{margin-top:56px}.qm{margin-bottom:104px}.qu{flex-direction:row}.qz{margin-bottom:0}.ra{margin-right:20px}.rx{max-width:500px}.sn{margin-bottom:72px}.su{font-size:24px}.sv{line-height:30px}.sw{letter-spacing:-0.016em}.ti{padding-top:72px}</style><style type="text/css" data-fela-rehydration="535" data-fela-type="RULE" media="all and (min-width: 552px) and (max-width: 727.98px)">.k{display:none}.u{display:flex}.v{justify-content:space-between}.bt{width:24px}.cd{margin:0 24px}.cs{height:40px}.cz{margin-bottom:44px}.dl{margin-bottom:32px}.dz{font-size:13px}.ea{line-height:20px}.ei{padding:0px 8px 1px}.fv{margin-bottom:4px}.go{margin-top:32px}.hj{font-size:32px}.hk{margin-bottom:24px}.hl{line-height:38px}.hm{letter-spacing:-0.014em}.ib{align-items:flex-start}.je{flex-direction:column}.jh{margin-bottom:2px}.jv{margin:24px 0 0}.jw{padding:0}.kl> *{margin-right:8px}.km> :last-child{margin-right:8px}.lc{margin-left:0px}.mc{margin:0}.ms{border:1px solid #F2F2F2}.mt{border-radius:99em}.mu{padding:0px 16px 0px 12px}.mv{height:38px}.mw{align-items:center}.my svg{margin-right:8px}.np{font-size:18px}.nq{margin-top:1.56em}.nr{line-height:28px}.ns{letter-spacing:-0.003em}.oo{font-size:16px}.op{margin-top:1.23em}.oq{letter-spacing:0}.pc{margin-top:0.67em}.pl{margin-top:40px}.ql{margin-bottom:96px}.rb{margin-bottom:20px}.rc{margin-right:0}.ry{max-width:100%}.sf{font-size:24px}.sg{line-height:30px}.sh{letter-spacing:-0.016em}.sm{margin-bottom:64px}.ss{font-size:20px}.st{line-height:24px}.th{padding-top:48px}.mx:hover{border-color:#E5E5E5}</style><style type="text/css" data-fela-rehydration="535" data-fela-type="RULE" media="print">.qc{display:none}</style><style type="text/css" data-fela-rehydration="535" data-fela-type="RULE" media="(orientation: landscape) and (max-width: 903.98px)">.jq{max-height:none}</style><style type="text/css" data-fela-rehydration="535" data-fela-type="RULE" media="(prefers-reduced-motion: no-preference)">.nd{transition:transform 300ms cubic-bezier(0.2, 0, 0.2, 1)}</style></head><body><div id="root"><div class="a b c"><div class="d e f g h i j k"></div><script>document.domain = document.domain;</script><div class="l c"><div class="l m n o c"><div class="p q r s t u v w x i d y z"><a class="du ag dv bf ak b am an ao ap aq ar as at s u w i d q dw z" href="https://rsci.app.link/?%24canonical_url=https%3A%2F%2Fmedium.com%2Fp%2Faeaa178bbf9a&%7Efeature=LoOpenInAppButton&%7Echannel=ShowPostUnderCollection&source=---top_nav_layout_nav----------------------------------" rel="noopener follow">Open in app<svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" fill="none" viewBox="0 0 10 10" class="dt"><path fill="currentColor" d="M.985 8.485a.375.375 0 1 0 .53.53zM8.75 1.25h.375A.375.375 0 0 0 8.75.875zM8.375 6.5a.375.375 0 1 0 .75 0zM3.5.875a.375.375 0 1 0 0 .75zm-1.985 8.14 7.5-7.5-.53-.53-7.5 7.5zm6.86-7.765V6.5h.75V1.25zM3.5 1.625h5.25v-.75H3.5z"></path></svg></a><div class="ab q"><p class="bf b dx dy dz ea eb ec ed ee ef eg du"><span><a class="bf b dx dy eh dz ea ei eb ec ej ek ee el em eg eo ep eq er es et eu ev ew ex ey ez fa fb fc fd bm fe ff" data-testid="headerSignUpButton" href="https://medium.com/m/signin?operation=register&redirect=https%3A%2F%2Fcode.likeagirl.io%2Fmastering-futures-in-scala-3-techniques-to-avoid-blocking-and-boost-efficiency-aeaa178bbf9a&source=post_page---top_nav_layout_nav-----------------------global_nav-----------" rel="noopener follow">Sign up</a></span></p><div class="ax l"><p class="bf b dx dy dz ea eb ec ed ee ef eg du"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="headerSignInButton" href="https://medium.com/m/signin?operation=login&redirect=https%3A%2F%2Fcode.likeagirl.io%2Fmastering-futures-in-scala-3-techniques-to-avoid-blocking-and-boost-efficiency-aeaa178bbf9a&source=post_page---top_nav_layout_nav-----------------------global_nav-----------" rel="noopener follow">Sign in</a></span></p></div></div></div><div class="p q r ab ac"><div class="ab q ae"><a class="af ag ah ai aj ak al am an ao ap aq ar as at ab" aria-label="Homepage" data-testid="headerMediumLogo" href="https://medium.com/?source=---top_nav_layout_nav----------------------------------" rel="noopener follow"><svg xmlns="http://www.w3.org/2000/svg" width="719" height="160" fill="none" viewBox="0 0 719 160" class="au av aw"><path fill="#242424" d="m174.104 9.734.215-.047V8.02H130.39L89.6 103.89 48.81 8.021H1.472v1.666l.212.047c8.018 1.81 12.09 4.509 12.09 14.242V137.93c0 9.734-4.087 12.433-12.106 14.243l-.212.047v1.671h32.118v-1.665l-.213-.048c-8.018-1.809-12.089-4.509-12.089-14.242V30.586l52.399 123.305h2.972l53.925-126.743V140.75c-.687 7.688-4.721 10.062-11.982 11.701l-.215.05v1.652h55.948v-1.652l-.215-.05c-7.269-1.639-11.4-4.013-12.087-11.701l-.037-116.774h.037c0-9.733 4.071-12.432 12.087-14.242m25.555 75.488c.915-20.474 8.268-35.252 20.606-35.507 3.806.063 6.998 1.312 9.479 3.714 5.272 5.118 7.751 15.812 7.368 31.793zm-.553 5.77h65.573v-.275c-.186-15.656-4.721-27.834-13.466-36.196-7.559-7.227-18.751-11.203-30.507-11.203h-.263c-6.101 0-13.584 1.48-18.909 4.16-6.061 2.807-11.407 7.003-15.855 12.511-7.161 8.874-11.499 20.866-12.554 34.343q-.05.606-.092 1.212a50 50 0 0 0-.065 1.151 85.807 85.807 0 0 0-.094 5.689c.71 30.524 17.198 54.917 46.483 54.917 25.705 0 40.675-18.791 44.407-44.013l-1.886-.664c-6.557 13.556-18.334 21.771-31.738 20.769-18.297-1.369-32.314-19.922-31.042-42.395m139.722 41.359c-2.151 5.101-6.639 7.908-12.653 7.908s-11.513-4.129-15.418-11.63c-4.197-8.053-6.405-19.436-6.405-32.92 0-28.067 8.729-46.22 22.24-46.22 5.657 0 10.111 2.807 12.236 7.704zm43.499 20.008c-8.019-1.897-12.089-4.722-12.089-14.951V1.309l-48.716 14.353v1.757l.299-.024c6.72-.543 11.278.386 13.925 2.83 2.072 1.915 3.082 4.853 3.082 8.987v18.66c-4.803-3.067-10.516-4.56-17.448-4.56-14.059 0-26.909 5.92-36.176 16.672-9.66 11.205-14.767 26.518-14.767 44.278-.003 31.72 15.612 53.039 38.851 53.039 13.595 0 24.533-7.449 29.54-20.013v16.865h43.711v-1.746zM424.1 19.819c0-9.904-7.468-17.374-17.375-17.374-9.859 0-17.573 7.632-17.573 17.374s7.721 17.374 17.573 17.374c9.907 0 17.375-7.47 17.375-17.374m11.499 132.546c-8.019-1.897-12.089-4.722-12.089-14.951h-.035V43.635l-43.714 12.551v1.705l.263.024c9.458.842 12.047 4.1 12.047 15.152v81.086h43.751v-1.746zm112.013 0c-8.018-1.897-12.089-4.722-12.089-14.951V43.635l-41.621 12.137v1.71l.246.026c7.733.813 9.967 4.257 9.967 15.36v59.279c-2.578 5.102-7.415 8.131-13.274 8.336-9.503 0-14.736-6.419-14.736-18.073V43.638l-43.714 12.55v1.703l.262.024c9.459.84 12.05 4.097 12.05 15.152v50.17a56.3 56.3 0 0 0 .91 10.444l.787 3.423c3.701 13.262 13.398 20.197 28.59 20.197 12.868 0 24.147-7.966 29.115-20.43v17.311h43.714v-1.747zm169.818 1.788v-1.749l-.213-.05c-8.7-2.006-12.089-5.789-12.089-13.49v-63.79c0-19.89-11.171-31.761-29.883-31.761-13.64 0-25.141 7.882-29.569 20.16-3.517-13.01-13.639-20.16-28.606-20.16-13.146 0-23.449 6.938-27.869 18.657V43.643L545.487 55.68v1.715l.263.024c9.345.829 12.047 4.181 12.047 14.95v81.784h40.787v-1.746l-.215-.053c-6.941-1.631-9.181-4.606-9.181-12.239V66.998c1.836-4.289 5.537-9.37 12.853-9.37 9.086 0 13.692 6.296 13.692 18.697v77.828h40.797v-1.746l-.215-.053c-6.94-1.631-9.18-4.606-9.18-12.239V75.066a42 42 0 0 0-.578-7.26c1.947-4.661 5.86-10.177 13.475-10.177 9.214 0 13.691 6.114 13.691 18.696v77.828z"></path></svg></a><div class="ax h"><div class="ab ay az ba bb q bc bd"><div class="bm" aria-hidden="false" aria-describedby="searchResults" aria-labelledby="searchResults"></div><div class="bn bo ab"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path fill="currentColor" fill-rule="evenodd" d="M4.092 11.06a6.95 6.95 0 1 1 13.9 0 6.95 6.95 0 0 1-13.9 0m6.95-8.05a8.05 8.05 0 1 0 5.13 14.26l3.75 3.75a.56.56 0 1 0 .79-.79l-3.73-3.73A8.05 8.05 0 0 0 11.042 3z" clip-rule="evenodd"></path></svg></div><input role="combobox" aria-controls="searchResults" aria-expanded="false" aria-label="search" data-testid="headerSearchInput" tabindex="0" class="ay be bf bg z bh bi bj bk bl" placeholder="Search" value=""/></div></div></div><div class="h k w fg fh"><div class="fi ab"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="headerWriteButton" href="https://medium.com/m/signin?operation=register&redirect=https%3A%2F%2Fmedium.com%2Fnew-story&source=---top_nav_layout_nav-----------------------new_post_topnav-----------" rel="noopener follow"><div class="bf b bg z du fj fk ab q fl fm"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24" aria-label="Write"><path fill="currentColor" d="M14 4a.5.5 0 0 0 0-1zm7 6a.5.5 0 0 0-1 0zm-7-7H4v1h10zM3 4v16h1V4zm1 17h16v-1H4zm17-1V10h-1v10zm-1 1a1 1 0 0 0 1-1h-1zM3 20a1 1 0 0 0 1 1v-1zM4 3a1 1 0 0 0-1 1h1z"></path><path stroke="currentColor" d="m17.5 4.5-8.458 8.458a.25.25 0 0 0-.06.098l-.824 2.47a.25.25 0 0 0 .316.316l2.47-.823a.25.25 0 0 0 .098-.06L19.5 6.5m-2-2 2.323-2.323a.25.25 0 0 1 .354 0l1.646 1.646a.25.25 0 0 1 0 .354L19.5 6.5m-2-2 2 2"></path></svg><div class="dt l">Write</div></div></a></span></div></div><div class="k j i d"><div class="fi ab"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="headerSearchButton" href="https://medium.com/search?source=---top_nav_layout_nav----------------------------------" rel="noopener follow"><div class="bf b bg z du fj fk ab q fl fm"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24" aria-label="Search"><path fill="currentColor" fill-rule="evenodd" d="M4.092 11.06a6.95 6.95 0 1 1 13.9 0 6.95 6.95 0 0 1-13.9 0m6.95-8.05a8.05 8.05 0 1 0 5.13 14.26l3.75 3.75a.56.56 0 1 0 .79-.79l-3.73-3.73A8.05 8.05 0 0 0 11.042 3z" clip-rule="evenodd"></path></svg></div></a></div></div><div class="fi h k j"><div class="ab q"><p class="bf b dx dy dz ea eb ec ed ee ef eg du"><span><a class="bf b dx dy eh dz ea ei eb ec ej ek ee el em eg eo ep eq er es et eu ev ew ex ey ez fa fb fc fd bm fe ff" data-testid="headerSignUpButton" href="https://medium.com/m/signin?operation=register&redirect=https%3A%2F%2Fcode.likeagirl.io%2Fmastering-futures-in-scala-3-techniques-to-avoid-blocking-and-boost-efficiency-aeaa178bbf9a&source=post_page---top_nav_layout_nav-----------------------global_nav-----------" rel="noopener follow">Sign up</a></span></p><div class="ax l"><p class="bf b dx dy dz ea eb ec ed ee ef eg du"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="headerSignInButton" href="https://medium.com/m/signin?operation=login&redirect=https%3A%2F%2Fcode.likeagirl.io%2Fmastering-futures-in-scala-3-techniques-to-avoid-blocking-and-boost-efficiency-aeaa178bbf9a&source=post_page---top_nav_layout_nav-----------------------global_nav-----------" rel="noopener follow">Sign in</a></span></p></div></div></div><div class="l" aria-hidden="false"><button class="ay fn am ab q ao fo fp fq" aria-label="user options menu" data-testid="headerUserIcon"><div class="l fj"><img alt="" class="l fd by bz ca cx" src="https://miro.medium.com/v2/resize:fill:64:64/1*dmbNkD5D-u45r44go_cf0g.png" width="32" height="32" loading="lazy" role="presentation"/><div class="fr by l bz ca fs n ay ft"></div></div></button></div></div></div><div class="l"><div class="fu fv fw fx fy l"><div class="ab cb"><div class="ci bh fz ga gb gc"></div></div><article class="meteredContent"><div class="l"><div class="l"><span class="l"></span><section><div><div class="fs gi gj gk gl gm"></div><div><div class="speechify-ignore l"><div class="gn go gp gq gr l"></div><div class="ab cb"><div class="ci bh fz ga gb gc"><div class="cl ab gs"><div class="gv ab"><div class="bm" aria-hidden="false"><button class="l ay ao am" aria-label="Member-only story"><div class="h k j i d"><div><div class="bm" aria-hidden="false"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 64 64"><path fill="#FFC017" d="m39.637 40.831-5.771 15.871a1.99 1.99 0 0 1-3.732 0l-5.771-15.87a2.02 2.02 0 0 0-1.194-1.195L7.298 33.866a1.99 1.99 0 0 1 0-3.732l15.87-5.771a2.02 2.02 0 0 0 1.195-1.194l5.771-15.871a1.99 1.99 0 0 1 3.732 0l5.771 15.87a2.02 2.02 0 0 0 1.194 1.195l15.871 5.771a1.99 1.99 0 0 1 0 3.732l-15.87 5.771a2.02 2.02 0 0 0-1.195 1.194"></path></svg></div></div></div><div class="s u w fg fh q"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 64 64" class="gt gu"><path fill="#FFC017" d="m39.637 40.831-5.771 15.871a1.99 1.99 0 0 1-3.732 0l-5.771-15.87a2.02 2.02 0 0 0-1.194-1.195L7.298 33.866a1.99 1.99 0 0 1 0-3.732l15.87-5.771a2.02 2.02 0 0 0 1.195-1.194l5.771-15.871a1.99 1.99 0 0 1 3.732 0l5.771 15.87a2.02 2.02 0 0 0 1.194 1.195l15.871 5.771a1.99 1.99 0 0 1 0 3.732l-15.87 5.771a2.02 2.02 0 0 0-1.195 1.194"></path></svg><p class="bf b bg z du">Member-only story</p></div></button></div></div></div></div></div></div></div><div class="gw gx gy gz ha"><div class="ab cb"><div class="ci bh fz ga gb gc"><div><h1 id="5736" class="pw-post-title hb hc hd bf he hf hg hh hi hj hk hl hm hn ho hp hq hr hs ht hu hv hw hx hy hz bk" data-testid="storyTitle">Mastering Futures in Scala: 3 Techniques to Avoid Blocking and Boost Efficiency</h1><div><div class="speechify-ignore ab cp"><div class="speechify-ignore bh l"><div class="ia ib ic id ie ab"><div><div class="ab if"><div><div class="bm" aria-hidden="false"><a href="https://cleopatradouglas.medium.com/?source=post_page---byline--aeaa178bbf9a--------------------------------" rel="noopener follow"><div class="l ig ih by ii ij"><div class="l fj"><img alt="Cleopatra Douglas" class="l fd by dd de cx" src="https://miro.medium.com/v2/resize:fill:88:88/1*YuPpJL1Kci8SZnY0hmEQGw@2x.jpeg" width="44" height="44" loading="lazy" data-testid="authorPhoto"/><div class="ik by l dd de fs n il ft"></div></div></div></a></div></div><div class="im ab fj"><div><div class="bm" aria-hidden="false"><a href="https://code.likeagirl.io/?source=post_page---byline--aeaa178bbf9a--------------------------------" rel="noopener ugc nofollow"><div class="l in io by ii ip"><div class="l fj"><img alt="Code Like A Girl" class="l fd by br iq cx" src="https://miro.medium.com/v2/resize:fill:48:48/1*rt1mE2Q0rmKsUcJX2ewFoA.png" width="24" height="24" loading="lazy" data-testid="publicationPhoto"/><div class="ik by l br iq fs n il ft"></div></div></div></a></div></div></div></div></div><div class="bn bh l"><div class="ab"><div style="flex:1"><span class="bf b bg z bk"><div class="ir ab q"><div class="ab q is"><div class="ab q"><div><div class="bm" aria-hidden="false"><p class="bf b it iu bk"><a class="af ag ah ai aj ak al am an ao ap aq ar iv" data-testid="authorName" href="https://cleopatradouglas.medium.com/?source=post_page---byline--aeaa178bbf9a--------------------------------" rel="noopener follow">Cleopatra Douglas</a></p></div></div></div><span class="iw ix" aria-hidden="true"><span class="bf b bg z du">·</span></span><p class="bf b it iu du"><span><a class="iy iz ah ai aj ak al am an ao ap aq ar ex ja jb" href="https://medium.com/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fsubscribe%2Fuser%2Fe1645eb9431&operation=register&redirect=https%3A%2F%2Fcode.likeagirl.io%2Fmastering-futures-in-scala-3-techniques-to-avoid-blocking-and-boost-efficiency-aeaa178bbf9a&user=Cleopatra+Douglas&userId=e1645eb9431&source=post_page-e1645eb9431--byline--aeaa178bbf9a---------------------post_header-----------" rel="noopener follow">Follow</a></span></p></div></div></span></div></div><div class="l jc"><span class="bf b bg z du"><div class="ab cn jd je jf"><div class="jg jh ab"><div class="bf b bg z du ab ji"><span class="gt l jc">Published in</span><div><div class="l" aria-hidden="false"><a class="af ag ah ai aj ak al am an ao ap aq ar iv ab q" data-testid="publicationName" href="https://code.likeagirl.io/?source=post_page---byline--aeaa178bbf9a--------------------------------" rel="noopener ugc nofollow"><p class="bf b bg z jj jk jl jm jn jo jp jq bk">Code Like A Girl</p></a></div></div></div><div class="h k"><span class="iw ix" aria-hidden="true"><span class="bf b bg z du">·</span></span></div></div><span class="bf b bg z du"><div class="ab ae"><span data-testid="storyReadTime">3 min read</span><div class="jr js l" aria-hidden="true"><span class="l" aria-hidden="true"><span class="bf b bg z du">·</span></span></div><span data-testid="storyPublishDate">Nov 5, 2024</span></div></span></div></span></div></div></div><div class="ab cp jt ju jv jw jx jy jz ka kb kc kd ke kf kg kh ki"><div class="h k w fg fh q"><div class="ky l"><div class="ab q kz la"><div class="pw-multi-vote-icon fj gt lb lc ld"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="headerClapButton" href="https://medium.com/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fvote%2Fcode-like-a-girl%2Faeaa178bbf9a&operation=register&redirect=https%3A%2F%2Fcode.likeagirl.io%2Fmastering-futures-in-scala-3-techniques-to-avoid-blocking-and-boost-efficiency-aeaa178bbf9a&user=Cleopatra+Douglas&userId=e1645eb9431&source=---header_actions--aeaa178bbf9a---------------------clap_footer-----------" rel="noopener follow"><div><div class="bm" aria-hidden="false"><div class="le ao lf lg lh li am lj lk ll ld"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" aria-label="clap"><path fill-rule="evenodd" d="M11.37.828 12 3.282l.63-2.454zM13.916 3.953l1.523-2.112-1.184-.39zM8.589 1.84l1.522 2.112-.337-2.501zM18.523 18.92c-.86.86-1.75 1.246-2.62 1.33a6 6 0 0 0 .407-.372c2.388-2.389 2.86-4.951 1.399-7.623l-.912-1.603-.79-1.672c-.26-.56-.194-.98.203-1.288a.7.7 0 0 1 .546-.132c.283.046.546.231.728.5l2.363 4.157c.976 1.624 1.141 4.237-1.324 6.702m-10.999-.438L3.37 14.328a.828.828 0 0 1 .585-1.408.83.83 0 0 1 .585.242l2.158 2.157a.365.365 0 0 0 .516-.516l-2.157-2.158-1.449-1.449a.826.826 0 0 1 1.167-1.17l3.438 3.44a.363.363 0 0 0 .516 0 .364.364 0 0 0 0-.516L5.293 9.513l-.97-.97a.826.826 0 0 1 0-1.166.84.84 0 0 1 1.167 0l.97.968 3.437 3.436a.36.36 0 0 0 .517 0 .366.366 0 0 0 0-.516L6.977 7.83a.82.82 0 0 1-.241-.584.82.82 0 0 1 .824-.826c.219 0 .43.087.584.242l5.787 5.787a.366.366 0 0 0 .587-.415l-1.117-2.363c-.26-.56-.194-.98.204-1.289a.7.7 0 0 1 .546-.132c.283.046.545.232.727.501l2.193 3.86c1.302 2.38.883 4.59-1.277 6.75-1.156 1.156-2.602 1.627-4.19 1.367-1.418-.236-2.866-1.033-4.079-2.246M10.75 5.971l2.12 2.12c-.41.502-.465 1.17-.128 1.89l.22.465-3.523-3.523a.8.8 0 0 1-.097-.368c0-.22.086-.428.241-.584a.847.847 0 0 1 1.167 0m7.355 1.705c-.31-.461-.746-.758-1.23-.837a1.44 1.44 0 0 0-1.11.275c-.312.24-.505.543-.59.881a1.74 1.74 0 0 0-.906-.465 1.47 1.47 0 0 0-.82.106l-2.182-2.182a1.56 1.56 0 0 0-2.2 0 1.54 1.54 0 0 0-.396.701 1.56 1.56 0 0 0-2.21-.01 1.55 1.55 0 0 0-.416.753c-.624-.624-1.649-.624-2.237-.037a1.557 1.557 0 0 0 0 2.2c-.239.1-.501.238-.715.453a1.56 1.56 0 0 0 0 2.2l.516.515a1.556 1.556 0 0 0-.753 2.615L7.01 19c1.32 1.319 2.909 2.189 4.475 2.449q.482.08.971.08c.85 0 1.653-.198 2.393-.579.231.033.46.054.686.054 1.266 0 2.457-.52 3.505-1.567 2.763-2.763 2.552-5.734 1.439-7.586z" clip-rule="evenodd"></path></svg></div></div></div></a></span></div><div class="pw-multi-vote-count l lm ln lo lp lq lr ls"><p class="bf b dv z du"><span class="lt">--</span></p></div></div></div><div><div class="bm" aria-hidden="false"><button class="ao le lu lv ab q fk lw lx" aria-label="responses"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" class="hz"><path d="M18.006 16.803c1.533-1.456 2.234-3.325 2.234-5.321C20.24 7.357 16.709 4 12.191 4S4 7.357 4 11.482c0 4.126 3.674 7.482 8.191 7.482.817 0 1.622-.111 2.393-.327.231.2.48.391.744.559 1.06.693 2.203 1.044 3.399 1.044.224-.008.4-.112.486-.287a.49.49 0 0 0-.042-.518c-.495-.67-.845-1.364-1.04-2.057a4 4 0 0 1-.125-.598zm-3.122 1.055-.067-.223-.315.096a8 8 0 0 1-2.311.338c-4.023 0-7.292-2.955-7.292-6.587 0-3.633 3.269-6.588 7.292-6.588 4.014 0 7.112 2.958 7.112 6.593 0 1.794-.608 3.469-2.027 4.72l-.195.168v.255c0 .056 0 .151.016.295.025.231.081.478.154.733.154.558.398 1.117.722 1.659a5.3 5.3 0 0 1-2.165-.845c-.276-.176-.714-.383-.941-.59z"></path></svg></button></div></div></div><div class="ab q kj kk kl km kn ko kp kq kr ks kt ku kv kw kx"><div class="ly k j i d"></div><div class="h k"><div><div class="bm" aria-hidden="false"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="headerBookmarkButton" href="https://medium.com/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fbookmark%2Fp%2Faeaa178bbf9a&operation=register&redirect=https%3A%2F%2Fcode.likeagirl.io%2Fmastering-futures-in-scala-3-techniques-to-avoid-blocking-and-boost-efficiency-aeaa178bbf9a&source=---header_actions--aeaa178bbf9a---------------------bookmark_footer-----------" rel="noopener follow"><svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" fill="none" viewBox="0 0 25 25" class="du lz" aria-label="Add to list bookmark button"><path fill="currentColor" d="M18 2.5a.5.5 0 0 1 1 0V5h2.5a.5.5 0 0 1 0 1H19v2.5a.5.5 0 1 1-1 0V6h-2.5a.5.5 0 0 1 0-1H18zM7 7a1 1 0 0 1 1-1h3.5a.5.5 0 0 0 0-1H8a2 2 0 0 0-2 2v14a.5.5 0 0 0 .805.396L12.5 17l5.695 4.396A.5.5 0 0 0 19 21v-8.5a.5.5 0 0 0-1 0v7.485l-5.195-4.012a.5.5 0 0 0-.61 0L7 19.985z"></path></svg></a></span></div></div></div><div class="fd ma cn"><div class="l ae"><div class="ab cb"><div class="mb mc md me mf mg ci bh"><div class="ab"></div></div></div></div></div><div class="bm" aria-hidden="false" aria-describedby="postFooterSocialMenu" aria-labelledby="postFooterSocialMenu"><div><div class="bm" aria-hidden="false"><button aria-controls="postFooterSocialMenu" aria-expanded="false" aria-label="Share Post" data-testid="headerSocialShareButton" class="af fk ah ai aj ak al mh an ao ap ex mi mj lx mk ml mm mn mo s mp mq mr ms mt mu mv u mw mx my"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path fill="currentColor" fill-rule="evenodd" d="M15.218 4.931a.4.4 0 0 1-.118.132l.012.006a.45.45 0 0 1-.292.074.5.5 0 0 1-.3-.13l-2.02-2.02v7.07c0 .28-.23.5-.5.5s-.5-.22-.5-.5v-7.04l-2 2a.45.45 0 0 1-.57.04h-.02a.4.4 0 0 1-.16-.3.4.4 0 0 1 .1-.32l2.8-2.8a.5.5 0 0 1 .7 0l2.8 2.79a.42.42 0 0 1 .068.498m-.106.138.008.004v-.01zM16 7.063h1.5a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-11c-1.1 0-2-.9-2-2v-10a2 2 0 0 1 2-2H8a.5.5 0 0 1 .35.15.5.5 0 0 1 .15.35.5.5 0 0 1-.15.35.5.5 0 0 1-.35.15H6.4c-.5 0-.9.4-.9.9v10.2a.9.9 0 0 0 .9.9h11.2c.5 0 .9-.4.9-.9v-10.2c0-.5-.4-.9-.9-.9H16a.5.5 0 0 1 0-1" clip-rule="evenodd"></path></svg><div class="j i d"><p class="bf b bg z du">Share</p></div></button></div></div></div></div></div></div></div></div></div><figure class="gn go gp gq gr nc mz na paragraph-image"><div role="button" tabindex="0" class="nd ne fj nf bh ng"><div class="mz na nb"><picture><source srcSet="https://miro.medium.com/v2/resize:fit:640/format:webp/1*i-3ZPps2Vxa1545Tic0WiQ.png 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/1*i-3ZPps2Vxa1545Tic0WiQ.png 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/1*i-3ZPps2Vxa1545Tic0WiQ.png 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/1*i-3ZPps2Vxa1545Tic0WiQ.png 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/1*i-3ZPps2Vxa1545Tic0WiQ.png 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/1*i-3ZPps2Vxa1545Tic0WiQ.png 1100w, https://miro.medium.com/v2/resize:fit:1400/format:webp/1*i-3ZPps2Vxa1545Tic0WiQ.png 1400w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px" type="image/webp"/><source data-testid="og" srcSet="https://miro.medium.com/v2/resize:fit:640/1*i-3ZPps2Vxa1545Tic0WiQ.png 640w, https://miro.medium.com/v2/resize:fit:720/1*i-3ZPps2Vxa1545Tic0WiQ.png 720w, https://miro.medium.com/v2/resize:fit:750/1*i-3ZPps2Vxa1545Tic0WiQ.png 750w, https://miro.medium.com/v2/resize:fit:786/1*i-3ZPps2Vxa1545Tic0WiQ.png 786w, https://miro.medium.com/v2/resize:fit:828/1*i-3ZPps2Vxa1545Tic0WiQ.png 828w, https://miro.medium.com/v2/resize:fit:1100/1*i-3ZPps2Vxa1545Tic0WiQ.png 1100w, https://miro.medium.com/v2/resize:fit:1400/1*i-3ZPps2Vxa1545Tic0WiQ.png 1400w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px"/><img alt="" class="bh mg nh c" width="700" height="260" loading="eager" role="presentation"/></picture></div></div></figure><p id="bc90" class="pw-post-body-paragraph ni nj hd nk b nl nm nn no np nq nr ns nt nu nv nw nx ny nz oa ob oc od oe of gw bk"><em class="og">Read Free — </em><a class="af oh" href="https://cleopatradouglas.medium.com/aeaa178bbf9a?sk=a9a0c1d7777b97adedf7e3b4cb302e65" rel="noopener"><em class="og">Here</em></a><em class="og">.</em></p><p id="dd15" class="pw-post-body-paragraph ni nj hd nk b nl nm nn no np nq nr ns nt nu nv nw nx ny nz oa ob oc od oe of gw bk">As a backend engineer, I often build endpoints and call other external endpoints to perform tasks or augment data.</p><p id="31f6" class="pw-post-body-paragraph ni nj hd nk b nl nm nn no np nq nr ns nt nu nv nw nx ny nz oa ob oc od oe of gw bk">As you can imagine, this involves having a lot of Futures when working with scala. After only a year and a couple of months (including a few days ago) of asking what’s wrong with my code, I think I have figured out a good framework for avoiding blocking issues (as much as possible).</p><h2 id="b69b" class="oi oj hd bf ok ol om dy on oo op ea oq nt or os ot nx ou ov ow ob ox oy oz pa bk">Simplify Chaining of Multiple Futures</h2><p id="1ff8" class="pw-post-body-paragraph ni nj hd nk b nl pb nn no np pc nr ns nt pd nv nw nx pe nz oa ob pf od oe of gw bk">Using <code class="cx pg ph pi pj b">for</code>-<code class="cx pg ph pi pj b">yield</code> with futures allows me to run them without waiting for each future to complete one at a time. Instead, it’ll run them concurrently and continue when all futures are complete, which can reduce the runtime and avoid blocking issues.</p><p id="cd04" class="pw-post-body-paragraph ni nj hd nk b nl nm nn no np nq nr ns nt nu nv nw nx ny nz oa ob oc od oe of gw bk">For example, if I have multiple futures, I want to call and combine, using. <code class="cx pg ph pi pj b">for</code>-<code class="cx pg ph pi pj b">yield</code> is both non-blocking and efficient:</p><pre class="pk pl pm pn po pp pj pq bp pr bb bk"><span id="cac5" class="ps oj hd pj b bg pt pu l pv pw">import scala.concurrent.Future<br/>import scala.concurrent.ExecutionContext.Implicits.global<br/><br/>def callMultipleFutures(): Future[ResultType] = {<br/> for {<br/> result1 <- future1()<br/> result2 <- future2(result1)<br/> result3 <- future3(result1, result2)<br/> } yield combineResults(result1, result2, result3)<br/>}</span></pre></div></div></div></div></section></div></div></article></div><div class="l"></div><footer class="px py pz qa gv ab q qb ip c"><div class="l ae"><div class="ab cb"><div class="ci bh fz ga gb gc"><div class="ab cp qc"><div class="ab q kz"><div class="qd l"><span class="l qe qf qg e d"><div class="ab q kz la"><div class="pw-multi-vote-icon fj gt lb lc ld"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="footerClapButton" href="https://medium.com/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fvote%2Fcode-like-a-girl%2Faeaa178bbf9a&operation=register&redirect=https%3A%2F%2Fcode.likeagirl.io%2Fmastering-futures-in-scala-3-techniques-to-avoid-blocking-and-boost-efficiency-aeaa178bbf9a&user=Cleopatra+Douglas&userId=e1645eb9431&source=---footer_actions--aeaa178bbf9a---------------------clap_footer-----------" rel="noopener follow"><div><div class="bm" aria-hidden="false"><div class="le ao lf lg lh li am lj lk ll ld"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" aria-label="clap"><path fill-rule="evenodd" d="M11.37.828 12 3.282l.63-2.454zM13.916 3.953l1.523-2.112-1.184-.39zM8.589 1.84l1.522 2.112-.337-2.501zM18.523 18.92c-.86.86-1.75 1.246-2.62 1.33a6 6 0 0 0 .407-.372c2.388-2.389 2.86-4.951 1.399-7.623l-.912-1.603-.79-1.672c-.26-.56-.194-.98.203-1.288a.7.7 0 0 1 .546-.132c.283.046.546.231.728.5l2.363 4.157c.976 1.624 1.141 4.237-1.324 6.702m-10.999-.438L3.37 14.328a.828.828 0 0 1 .585-1.408.83.83 0 0 1 .585.242l2.158 2.157a.365.365 0 0 0 .516-.516l-2.157-2.158-1.449-1.449a.826.826 0 0 1 1.167-1.17l3.438 3.44a.363.363 0 0 0 .516 0 .364.364 0 0 0 0-.516L5.293 9.513l-.97-.97a.826.826 0 0 1 0-1.166.84.84 0 0 1 1.167 0l.97.968 3.437 3.436a.36.36 0 0 0 .517 0 .366.366 0 0 0 0-.516L6.977 7.83a.82.82 0 0 1-.241-.584.82.82 0 0 1 .824-.826c.219 0 .43.087.584.242l5.787 5.787a.366.366 0 0 0 .587-.415l-1.117-2.363c-.26-.56-.194-.98.204-1.289a.7.7 0 0 1 .546-.132c.283.046.545.232.727.501l2.193 3.86c1.302 2.38.883 4.59-1.277 6.75-1.156 1.156-2.602 1.627-4.19 1.367-1.418-.236-2.866-1.033-4.079-2.246M10.75 5.971l2.12 2.12c-.41.502-.465 1.17-.128 1.89l.22.465-3.523-3.523a.8.8 0 0 1-.097-.368c0-.22.086-.428.241-.584a.847.847 0 0 1 1.167 0m7.355 1.705c-.31-.461-.746-.758-1.23-.837a1.44 1.44 0 0 0-1.11.275c-.312.24-.505.543-.59.881a1.74 1.74 0 0 0-.906-.465 1.47 1.47 0 0 0-.82.106l-2.182-2.182a1.56 1.56 0 0 0-2.2 0 1.54 1.54 0 0 0-.396.701 1.56 1.56 0 0 0-2.21-.01 1.55 1.55 0 0 0-.416.753c-.624-.624-1.649-.624-2.237-.037a1.557 1.557 0 0 0 0 2.2c-.239.1-.501.238-.715.453a1.56 1.56 0 0 0 0 2.2l.516.515a1.556 1.556 0 0 0-.753 2.615L7.01 19c1.32 1.319 2.909 2.189 4.475 2.449q.482.08.971.08c.85 0 1.653-.198 2.393-.579.231.033.46.054.686.054 1.266 0 2.457-.52 3.505-1.567 2.763-2.763 2.552-5.734 1.439-7.586z" clip-rule="evenodd"></path></svg></div></div></div></a></span></div><div class="pw-multi-vote-count l lm ln lo lp lq lr ls"><p class="bf b dv z du"><span class="lt">--</span></p></div></div></span><span class="l h g f qh qi"><div class="ab q kz la"><div class="pw-multi-vote-icon fj gt lb lc ld"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="footerClapButton" href="https://medium.com/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fvote%2Fcode-like-a-girl%2Faeaa178bbf9a&operation=register&redirect=https%3A%2F%2Fcode.likeagirl.io%2Fmastering-futures-in-scala-3-techniques-to-avoid-blocking-and-boost-efficiency-aeaa178bbf9a&user=Cleopatra+Douglas&userId=e1645eb9431&source=---footer_actions--aeaa178bbf9a---------------------clap_footer-----------" rel="noopener follow"><div><div class="bm" aria-hidden="false"><div class="le ao lf lg lh li am lj lk ll ld"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" aria-label="clap"><path fill-rule="evenodd" d="M11.37.828 12 3.282l.63-2.454zM13.916 3.953l1.523-2.112-1.184-.39zM8.589 1.84l1.522 2.112-.337-2.501zM18.523 18.92c-.86.86-1.75 1.246-2.62 1.33a6 6 0 0 0 .407-.372c2.388-2.389 2.86-4.951 1.399-7.623l-.912-1.603-.79-1.672c-.26-.56-.194-.98.203-1.288a.7.7 0 0 1 .546-.132c.283.046.546.231.728.5l2.363 4.157c.976 1.624 1.141 4.237-1.324 6.702m-10.999-.438L3.37 14.328a.828.828 0 0 1 .585-1.408.83.83 0 0 1 .585.242l2.158 2.157a.365.365 0 0 0 .516-.516l-2.157-2.158-1.449-1.449a.826.826 0 0 1 1.167-1.17l3.438 3.44a.363.363 0 0 0 .516 0 .364.364 0 0 0 0-.516L5.293 9.513l-.97-.97a.826.826 0 0 1 0-1.166.84.84 0 0 1 1.167 0l.97.968 3.437 3.436a.36.36 0 0 0 .517 0 .366.366 0 0 0 0-.516L6.977 7.83a.82.82 0 0 1-.241-.584.82.82 0 0 1 .824-.826c.219 0 .43.087.584.242l5.787 5.787a.366.366 0 0 0 .587-.415l-1.117-2.363c-.26-.56-.194-.98.204-1.289a.7.7 0 0 1 .546-.132c.283.046.545.232.727.501l2.193 3.86c1.302 2.38.883 4.59-1.277 6.75-1.156 1.156-2.602 1.627-4.19 1.367-1.418-.236-2.866-1.033-4.079-2.246M10.75 5.971l2.12 2.12c-.41.502-.465 1.17-.128 1.89l.22.465-3.523-3.523a.8.8 0 0 1-.097-.368c0-.22.086-.428.241-.584a.847.847 0 0 1 1.167 0m7.355 1.705c-.31-.461-.746-.758-1.23-.837a1.44 1.44 0 0 0-1.11.275c-.312.24-.505.543-.59.881a1.74 1.74 0 0 0-.906-.465 1.47 1.47 0 0 0-.82.106l-2.182-2.182a1.56 1.56 0 0 0-2.2 0 1.54 1.54 0 0 0-.396.701 1.56 1.56 0 0 0-2.21-.01 1.55 1.55 0 0 0-.416.753c-.624-.624-1.649-.624-2.237-.037a1.557 1.557 0 0 0 0 2.2c-.239.1-.501.238-.715.453a1.56 1.56 0 0 0 0 2.2l.516.515a1.556 1.556 0 0 0-.753 2.615L7.01 19c1.32 1.319 2.909 2.189 4.475 2.449q.482.08.971.08c.85 0 1.653-.198 2.393-.579.231.033.46.054.686.054 1.266 0 2.457-.52 3.505-1.567 2.763-2.763 2.552-5.734 1.439-7.586z" clip-rule="evenodd"></path></svg></div></div></div></a></span></div><div class="pw-multi-vote-count l lm ln lo lp lq lr ls"><p class="bf b dv z du"><span class="lt">--</span></p></div></div></span></div><div class="bq ab"><div><div class="bm" aria-hidden="false"><button class="ao le lu lv ab q fk lw lx" aria-label="responses"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" class="hz"><path d="M18.006 16.803c1.533-1.456 2.234-3.325 2.234-5.321C20.24 7.357 16.709 4 12.191 4S4 7.357 4 11.482c0 4.126 3.674 7.482 8.191 7.482.817 0 1.622-.111 2.393-.327.231.2.48.391.744.559 1.06.693 2.203 1.044 3.399 1.044.224-.008.4-.112.486-.287a.49.49 0 0 0-.042-.518c-.495-.67-.845-1.364-1.04-2.057a4 4 0 0 1-.125-.598zm-3.122 1.055-.067-.223-.315.096a8 8 0 0 1-2.311.338c-4.023 0-7.292-2.955-7.292-6.587 0-3.633 3.269-6.588 7.292-6.588 4.014 0 7.112 2.958 7.112 6.593 0 1.794-.608 3.469-2.027 4.72l-.195.168v.255c0 .056 0 .151.016.295.025.231.081.478.154.733.154.558.398 1.117.722 1.659a5.3 5.3 0 0 1-2.165-.845c-.276-.176-.714-.383-.941-.59z"></path></svg></button></div></div></div></div><div class="ab q"><div class="qj l jc"><div><div class="bm" aria-hidden="false"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="footerBookmarkButton" href="https://medium.com/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fbookmark%2Fp%2Faeaa178bbf9a&operation=register&redirect=https%3A%2F%2Fcode.likeagirl.io%2Fmastering-futures-in-scala-3-techniques-to-avoid-blocking-and-boost-efficiency-aeaa178bbf9a&source=---footer_actions--aeaa178bbf9a---------------------bookmark_footer-----------" rel="noopener follow"><svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" fill="none" viewBox="0 0 25 25" class="du lz" aria-label="Add to list bookmark button"><path fill="currentColor" d="M18 2.5a.5.5 0 0 1 1 0V5h2.5a.5.5 0 0 1 0 1H19v2.5a.5.5 0 1 1-1 0V6h-2.5a.5.5 0 0 1 0-1H18zM7 7a1 1 0 0 1 1-1h3.5a.5.5 0 0 0 0-1H8a2 2 0 0 0-2 2v14a.5.5 0 0 0 .805.396L12.5 17l5.695 4.396A.5.5 0 0 0 19 21v-8.5a.5.5 0 0 0-1 0v7.485l-5.195-4.012a.5.5 0 0 0-.61 0L7 19.985z"></path></svg></a></span></div></div></div><div class="qj l jc"><div class="bm" aria-hidden="false" aria-describedby="postFooterSocialMenu" aria-labelledby="postFooterSocialMenu"><div><div class="bm" aria-hidden="false"><button aria-controls="postFooterSocialMenu" aria-expanded="false" aria-label="Share Post" data-testid="footerSocialShareButton" class="af fk ah ai aj ak al mh an ao ap ex mi mj lx mk"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path fill="currentColor" fill-rule="evenodd" d="M15.218 4.931a.4.4 0 0 1-.118.132l.012.006a.45.45 0 0 1-.292.074.5.5 0 0 1-.3-.13l-2.02-2.02v7.07c0 .28-.23.5-.5.5s-.5-.22-.5-.5v-7.04l-2 2a.45.45 0 0 1-.57.04h-.02a.4.4 0 0 1-.16-.3.4.4 0 0 1 .1-.32l2.8-2.8a.5.5 0 0 1 .7 0l2.8 2.79a.42.42 0 0 1 .068.498m-.106.138.008.004v-.01zM16 7.063h1.5a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-11c-1.1 0-2-.9-2-2v-10a2 2 0 0 1 2-2H8a.5.5 0 0 1 .35.15.5.5 0 0 1 .15.35.5.5 0 0 1-.15.35.5.5 0 0 1-.35.15H6.4c-.5 0-.9.4-.9.9v10.2a.9.9 0 0 0 .9.9h11.2c.5 0 .9-.4.9-.9v-10.2c0-.5-.4-.9-.9-.9H16a.5.5 0 0 1 0-1" clip-rule="evenodd"></path></svg></button></div></div></div></div></div></div></div></div></div></footer><div class="qk ql qm qn qo l"><div class="ab cb"><div class="ci bh fz ga gb gc"><div class="qp bh r qq"></div><div class="qr l"><div class="ab qs qt qu je jd"><div class="qv qw qx qy qz ra rb rc rd re ab cp"><div class="h k"><a href="https://code.likeagirl.io/?source=post_page---post_publication_info--aeaa178bbf9a--------------------------------" rel="noopener follow"><div class="fj ab"><img alt="Code Like A Girl" class="rf ig ih cx" src="https://miro.medium.com/v2/resize:fill:96:96/1*rt1mE2Q0rmKsUcJX2ewFoA.png" width="48" height="48" loading="lazy"/><div class="rf l ih ig fs n fr rg"></div></div></a></div><div class="j i d"><a href="https://code.likeagirl.io/?source=post_page---post_publication_info--aeaa178bbf9a--------------------------------" rel="noopener follow"><div class="fj ab"><img alt="Code Like A Girl" class="rf ri rh cx" src="https://miro.medium.com/v2/resize:fill:128:128/1*rt1mE2Q0rmKsUcJX2ewFoA.png" width="64" height="64" loading="lazy"/><div class="rf l rh ri fs n fr rg"></div></div></a></div><div class="j i d rj jc"><div class="ab"><span><a class="bf b bg z rk rl rm rn ro rp rq ev ew rr rs rt fa fb fc fd bm fe ff" href="https://medium.com/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fsubscribe%2Fcollection%2Fcode-like-a-girl&operation=register&redirect=https%3A%2F%2Fcode.likeagirl.io%2Fmastering-futures-in-scala-3-techniques-to-avoid-blocking-and-boost-efficiency-aeaa178bbf9a&collection=Code+Like+A+Girl&collectionId=811ec52eb09a&source=post_page---post_publication_info--aeaa178bbf9a---------------------follow_profile-----------" rel="noopener follow">Follow</a></span></div></div></div><div class="ab co ru"><div class="rv rw rx ry rz l"><a class="af ag ah aj ak al am an ao ap aq ar as at ab q" href="https://code.likeagirl.io/?source=post_page---post_publication_info--aeaa178bbf9a--------------------------------" rel="noopener follow"><h2 class="pw-author-name bf sb sc sd se sf sg sh nt os ot nx ov ow ob oy oz bk"><span class="gw sa">Published in <!-- -->Code Like A Girl</span></h2></a><div class="si ab if"><div class="l jc"><span class="pw-follower-count bf b bg z du"><a class="af ag ah ai aj ak al am an ao ap aq ar iv" rel="noopener follow" href="/followers?source=post_page---post_publication_info--aeaa178bbf9a--------------------------------">49K Followers</a></span></div><div class="bf b bg z du ab ji"><span class="iw l" aria-hidden="true"><span class="bf b bg z du">·</span></span><a class="af ag ah ai aj ak al am an ao ap aq ar iv" rel="noopener follow" href="/top-5-automation-tools-for-qa-beginners-c681d2d72a84?source=post_page---post_publication_info--aeaa178bbf9a--------------------------------">Last published <!-- -->1 day ago</a></div></div><div class="sj l"><p class="bf b bg z bk"><span class="gw">Welcome to Code Like A Girl, a space that celebrates redefining society's perceptions of women in technology. Share your story with us!</span></p></div></div></div><div class="h k"><div class="ab"><span><a class="bf b bg z rk rl rm rn ro rp rq ev ew rr rs rt fa fb fc fd bm fe ff" href="https://medium.com/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fsubscribe%2Fcollection%2Fcode-like-a-girl&operation=register&redirect=https%3A%2F%2Fcode.likeagirl.io%2Fmastering-futures-in-scala-3-techniques-to-avoid-blocking-and-boost-efficiency-aeaa178bbf9a&collection=Code+Like+A+Girl&collectionId=811ec52eb09a&source=post_page---post_publication_info--aeaa178bbf9a---------------------follow_profile-----------" rel="noopener follow">Follow</a></span></div></div></div></div><div class="ab qs qt qu je jd"><div class="qv qw qx qy qz ra rb rc rd re ab cp"><div class="h k"><a tabindex="0" href="https://cleopatradouglas.medium.com/?source=post_page---post_author_info--aeaa178bbf9a--------------------------------" rel="noopener follow"><div class="l fj"><img alt="Cleopatra Douglas" class="l fd by ih ig cx" src="https://miro.medium.com/v2/resize:fill:96:96/1*YuPpJL1Kci8SZnY0hmEQGw@2x.jpeg" width="48" height="48" loading="lazy"/><div class="fr by l ih ig fs n ay rg"></div></div></a></div><div class="j i d"><a tabindex="0" href="https://cleopatradouglas.medium.com/?source=post_page---post_author_info--aeaa178bbf9a--------------------------------" rel="noopener follow"><div class="l fj"><img alt="Cleopatra Douglas" class="l fd by rh ri cx" src="https://miro.medium.com/v2/resize:fill:128:128/1*YuPpJL1Kci8SZnY0hmEQGw@2x.jpeg" width="64" height="64" loading="lazy"/><div class="fr by l rh ri fs n ay rg"></div></div></a></div><div class="j i d rj jc"><div class="ab"><span><a class="bf b bg z rk rl rm rn ro rp rq ev ew rr rs rt fa fb fc fd bm fe ff" href="https://medium.com/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fsubscribe%2Fuser%2Fe1645eb9431&operation=register&redirect=https%3A%2F%2Fcode.likeagirl.io%2Fmastering-futures-in-scala-3-techniques-to-avoid-blocking-and-boost-efficiency-aeaa178bbf9a&user=Cleopatra+Douglas&userId=e1645eb9431&source=post_page-e1645eb9431--post_author_info--aeaa178bbf9a---------------------follow_profile-----------" rel="noopener follow">Follow</a></span></div></div></div><div class="ab co ru"><div class="rv rw rx ry rz l"><a class="af ag ah aj ak al am an ao ap aq ar as at ab q" href="https://cleopatradouglas.medium.com/?source=post_page---post_author_info--aeaa178bbf9a--------------------------------" rel="noopener follow"><h2 class="pw-author-name bf sb sc sd se sf sg sh nt os ot nx ov ow ob oy oz bk"><span class="gw sa">Written by <!-- -->Cleopatra Douglas</span></h2></a><div class="si ab if"><div class="l jc"><span class="pw-follower-count bf b bg z du"><a class="af ag ah ai aj ak al am an ao ap aq ar iv" href="https://cleopatradouglas.medium.com/followers?source=post_page---post_author_info--aeaa178bbf9a--------------------------------" rel="noopener follow">418 Followers</a></span></div><div class="bf b bg z du ab ji"><span class="iw l" aria-hidden="true"><span class="bf b bg z du">·</span></span><a class="af ag ah ai aj ak al am an ao ap aq ar iv" href="https://medium.com/@cleopatradouglas/following?source=post_page---post_author_info--aeaa178bbf9a--------------------------------" rel="noopener follow">331 Following</a></div></div><div class="sj l"><p class="bf b bg z bk">My Substack NewsLetter: <a class="af ag ah ai aj ak al am an ao ap aq ar oh gx" href="https://thejvmrabbithole.substack.com" rel="noopener ugc nofollow">https://thejvmrabbithole.substack.com</a></p></div></div></div><div class="h k"><div class="ab"><span><a class="bf b bg z rk rl rm rn ro rp rq ev ew rr rs rt fa fb fc fd bm fe ff" href="https://medium.com/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fsubscribe%2Fuser%2Fe1645eb9431&operation=register&redirect=https%3A%2F%2Fcode.likeagirl.io%2Fmastering-futures-in-scala-3-techniques-to-avoid-blocking-and-boost-efficiency-aeaa178bbf9a&user=Cleopatra+Douglas&userId=e1645eb9431&source=post_page-e1645eb9431--post_author_info--aeaa178bbf9a---------------------follow_profile-----------" rel="noopener follow">Follow</a></span></div></div></div></div></div></div><div class="sk l"><div class="qp bh r sl sm sn so sp"></div><div class="ab cb"><div class="ci bh fz ga gb gc"><div class="ab q cp"><h2 class="bf sb sq sr on ss st oq su sv sw sx sy sz ta tb tc bk">No responses yet</h2><div class="ab td"><div><div class="bm" aria-hidden="false"><a class="te tf" href="https://policy.medium.com/medium-rules-30e5502c4eb4?source=post_page---post_responses--aeaa178bbf9a--------------------------------" rel="noopener follow" target="_blank"><svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" viewBox="0 0 25 25"><path fill-rule="evenodd" d="M11.987 5.036a.754.754 0 0 1 .914-.01c.972.721 1.767 1.218 2.6 1.543.828.322 1.719.485 2.887.505a.755.755 0 0 1 .741.757c-.018 3.623-.43 6.256-1.449 8.21-1.034 1.984-2.662 3.209-4.966 4.083a.75.75 0 0 1-.537-.003c-2.243-.874-3.858-2.095-4.897-4.074-1.024-1.951-1.457-4.583-1.476-8.216a.755.755 0 0 1 .741-.757c1.195-.02 2.1-.182 2.923-.503.827-.322 1.6-.815 2.519-1.535m.468.903c-.897.69-1.717 1.21-2.623 1.564-.898.35-1.856.527-3.026.565.037 3.45.469 5.817 1.36 7.515.884 1.684 2.25 2.762 4.284 3.571 2.092-.81 3.465-1.89 4.344-3.575.886-1.698 1.299-4.065 1.334-7.512-1.149-.039-2.091-.217-2.99-.567-.906-.353-1.745-.873-2.683-1.561m-.009 9.155a2.672 2.672 0 1 0 0-5.344 2.672 2.672 0 0 0 0 5.344m0 1a3.672 3.672 0 1 0 0-7.344 3.672 3.672 0 0 0 0 7.344m-1.813-3.777.525-.526.916.917 1.623-1.625.526.526-2.149 2.152z" clip-rule="evenodd"></path></svg></a></div></div></div></div></div></div></div><div class="tg th ti tj tk l bx"><div class="h k j"><div class="qp bh tl tm"></div><div class="ab cb"><div class="ci bh fz ga gb gc"><div class="tn ab kz jf"><div class="to tp l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://help.medium.com/hc/en-us?source=post_page-----aeaa178bbf9a--------------------------------" rel="noopener follow"><p class="bf b dv z du">Help</p></a></div><div class="to tp l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://medium.statuspage.io/?source=post_page-----aeaa178bbf9a--------------------------------" rel="noopener follow"><p class="bf b dv z du">Status</p></a></div><div class="to tp l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://medium.com/about?autoplay=1&source=post_page-----aeaa178bbf9a--------------------------------" rel="noopener follow"><p class="bf b dv z du">About</p></a></div><div class="to tp l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://medium.com/jobs-at-medium/work-at-medium-959d1a85284e?source=post_page-----aeaa178bbf9a--------------------------------" rel="noopener follow"><p class="bf b dv z du">Careers</p></a></div><div class="to tp l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="pressinquiries@medium.com?source=post_page-----aeaa178bbf9a--------------------------------" rel="noopener follow"><p class="bf b dv z du">Press</p></a></div><div class="to tp l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://blog.medium.com/?source=post_page-----aeaa178bbf9a--------------------------------" rel="noopener follow"><p class="bf b dv z du">Blog</p></a></div><div class="to tp l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://policy.medium.com/medium-privacy-policy-f03bf92035c9?source=post_page-----aeaa178bbf9a--------------------------------" rel="noopener follow"><p class="bf b dv z du">Privacy</p></a></div><div class="to tp l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://policy.medium.com/medium-terms-of-service-9db0094a1e0f?source=post_page-----aeaa178bbf9a--------------------------------" rel="noopener follow"><p class="bf b dv z du">Terms</p></a></div><div class="to tp l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://speechify.com/medium?source=post_page-----aeaa178bbf9a--------------------------------" rel="noopener follow"><p class="bf b dv z du">Text to speech</p></a></div><div class="to l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://medium.com/business?source=post_page-----aeaa178bbf9a--------------------------------" rel="noopener follow"><p class="bf b dv z du">Teams</p></a></div></div></div></div></div></div></div></div></div></div><script>window.__BUILD_ID__="main-20241122-185319-7bcdc08639"</script><script>window.__GRAPHQL_URI__ = "https://code.likeagirl.io/_/graphql"</script><script>window.__PRELOADED_STATE__ = {"algolia":{"queries":{}},"cache":{"experimentGroupSet":true,"reason":"This request is not using the cache middleware worker","group":"disabled","tags":["group-edgeCachePosts","post-aeaa178bbf9a","user-e1645eb9431","collection-811ec52eb09a"],"serverVariantState":"","middlewareEnabled":false,"cacheStatus":"DYNAMIC","shouldUseCache":false,"vary":[],"lohpSummerUpsellEnabled":false,"publicationHierarchyEnabledWeb":false,"postBottomResponsesEnabled":false},"client":{"hydrated":false,"isUs":false,"isNativeMedium":false,"isSafariMobile":false,"isSafari":false,"isFirefox":false,"routingEntity":{"type":"COLLECTION","id":"811ec52eb09a","explicit":true},"viewerIsBot":false},"debug":{"requestId":"798a8cfe-5481-40ae-887a-61350523523c","hybridDevServices":[],"originalSpanCarrier":{"traceparent":"00-e7048bca1f987bc71a3bd4379e811294-1723467ab8e1756c-01"}},"multiVote":{"clapsPerPost":{}},"navigation":{"branch":{"show":null,"hasRendered":null,"blockedByCTA":false},"hideGoogleOneTap":false,"hasRenderedAlternateUserBanner":null,"currentLocation":"https:\u002F\u002Fcode.likeagirl.io\u002Fmastering-futures-in-scala-3-techniques-to-avoid-blocking-and-boost-efficiency-aeaa178bbf9a","host":"code.likeagirl.io","hostname":"code.likeagirl.io","referrer":"","hasSetReferrer":false,"susiModal":{"step":null,"operation":"register"},"postRead":false,"partnerProgram":{"selectedCountryCode":null},"queryString":"?source=user_profile_page---------9-------------e1645eb9431---------------"},"config":{"nodeEnv":"production","version":"main-20241122-185319-7bcdc08639","target":"production","productName":"Medium","publicUrl":"https:\u002F\u002Fcdn-client.medium.com\u002Flite","authDomain":"medium.com","authGoogleClientId":"216296035834-k1k6qe060s2tp2a2jam4ljdcms00sttg.apps.googleusercontent.com","favicon":"production","glyphUrl":"https:\u002F\u002Fglyph.medium.com","branchKey":"key_live_ofxXr2qTrrU9NqURK8ZwEhknBxiI6KBm","algolia":{"appId":"MQ57UUUQZ2","apiKeySearch":"394474ced050e3911ae2249ecc774921","indexPrefix":"medium_","host":"-dsn.algolia.net"},"recaptchaKey":"6Lfc37IUAAAAAKGGtC6rLS13R1Hrw_BqADfS1LRk","recaptcha3Key":"6Lf8R9wUAAAAABMI_85Wb8melS7Zj6ziuf99Yot5","recaptchaEnterpriseKeyId":"6Le-uGgpAAAAAPprRaokM8AKthQ9KNGdoxaGUvVp","datadog":{"applicationId":"6702d87d-a7e0-42fe-bbcb-95b469547ea0","clientToken":"pub853ea8d17ad6821d9f8f11861d23dfed","rumToken":"pubf9cc52896502b9413b68ba36fc0c7162","context":{"deployment":{"target":"production","tag":"main-20241122-185319-7bcdc08639","commit":"7bcdc08639c179dc5172558201a3fd3abc1b5db6"}},"datacenter":"us"},"googleAnalyticsCode":"G-7JY7T788PK","googlePay":{"apiVersion":"2","apiVersionMinor":"0","merchantId":"BCR2DN6TV7EMTGBM","merchantName":"Medium","instanceMerchantId":"13685562959212738550"},"applePay":{"version":3},"signInWallCustomDomainCollectionIds":["3a8144eabfe3","336d898217ee","61061eb0c96b","138adf9c44c","819cc2aaeee0"],"mediumMastodonDomainName":"me.dm","mediumOwnedAndOperatedCollectionIds":["8a9336e5bb4","b7e45b22fec3","193b68bd4fba","8d6b8a439e32","54c98c43354d","3f6ecf56618","d944778ce714","92d2092dc598","ae2a65f35510","1285ba81cada","544c7006046e","fc8964313712","40187e704f1c","88d9857e584e","7b6769f2748b","bcc38c8f6edf","cef6983b292","cb8577c9149e","444d13b52878","713d7dbc99b0","ef8e90590e66","191186aaafa0","55760f21cdc5","9dc80918cc93","bdc4052bbdba","8ccfed20cbb2"],"tierOneDomains":["medium.com","thebolditalic.com","arcdigital.media","towardsdatascience.com","uxdesign.cc","codeburst.io","psiloveyou.xyz","writingcooperative.com","entrepreneurshandbook.co","prototypr.io","betterhumans.coach.me","theascent.pub"],"topicsToFollow":["d61cf867d93f","8a146bc21b28","1eca0103fff3","4d562ee63426","aef1078a3ef5","e15e46793f8d","6158eb913466","55f1c20aba7a","3d18b94f6858","4861fee224fd","63c6f1f93ee","1d98b3a9a871","decb52b64abf","ae5d4995e225","830cded25262"],"topicToTagMappings":{"accessibility":"accessibility","addiction":"addiction","android-development":"android-development","art":"art","artificial-intelligence":"artificial-intelligence","astrology":"astrology","basic-income":"basic-income","beauty":"beauty","biotech":"biotech","blockchain":"blockchain","books":"books","business":"business","cannabis":"cannabis","cities":"cities","climate-change":"climate-change","comics":"comics","coronavirus":"coronavirus","creativity":"creativity","cryptocurrency":"cryptocurrency","culture":"culture","cybersecurity":"cybersecurity","data-science":"data-science","design":"design","digital-life":"digital-life","disability":"disability","economy":"economy","education":"education","equality":"equality","family":"family","feminism":"feminism","fiction":"fiction","film":"film","fitness":"fitness","food":"food","freelancing":"freelancing","future":"future","gadgets":"gadgets","gaming":"gaming","gun-control":"gun-control","health":"health","history":"history","humor":"humor","immigration":"immigration","ios-development":"ios-development","javascript":"javascript","justice":"justice","language":"language","leadership":"leadership","lgbtqia":"lgbtqia","lifestyle":"lifestyle","machine-learning":"machine-learning","makers":"makers","marketing":"marketing","math":"math","media":"media","mental-health":"mental-health","mindfulness":"mindfulness","money":"money","music":"music","neuroscience":"neuroscience","nonfiction":"nonfiction","outdoors":"outdoors","parenting":"parenting","pets":"pets","philosophy":"philosophy","photography":"photography","podcasts":"podcast","poetry":"poetry","politics":"politics","privacy":"privacy","product-management":"product-management","productivity":"productivity","programming":"programming","psychedelics":"psychedelics","psychology":"psychology","race":"race","relationships":"relationships","religion":"religion","remote-work":"remote-work","san-francisco":"san-francisco","science":"science","self":"self","self-driving-cars":"self-driving-cars","sexuality":"sexuality","social-media":"social-media","society":"society","software-engineering":"software-engineering","space":"space","spirituality":"spirituality","sports":"sports","startups":"startup","style":"style","technology":"technology","transportation":"transportation","travel":"travel","true-crime":"true-crime","tv":"tv","ux":"ux","venture-capital":"venture-capital","visual-design":"visual-design","work":"work","world":"world","writing":"writing"},"defaultImages":{"avatar":{"imageId":"1*dmbNkD5D-u45r44go_cf0g.png","height":150,"width":150},"orgLogo":{"imageId":"7*V1_7XP4snlmqrc_0Njontw.png","height":110,"width":500},"postLogo":{"imageId":"bd978bb536350a710e8efb012513429cabdc4c28700604261aeda246d0f980b7","height":810,"width":1440},"postPreviewImage":{"imageId":"1*hn4v1tCaJy7cWMyb0bpNpQ.png","height":386,"width":579}},"collectionStructuredData":{"8d6b8a439e32":{"name":"Elemental","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fcdn-images-1.medium.com\u002Fmax\u002F980\u002F1*9ygdqoKprhwuTVKUM0DLPA@2x.png","width":980,"height":159}}},"3f6ecf56618":{"name":"Forge","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fcdn-images-1.medium.com\u002Fmax\u002F596\u002F1*uULpIlImcO5TDuBZ6lm7Lg@2x.png","width":596,"height":183}}},"ae2a65f35510":{"name":"GEN","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fmiro.medium.com\u002Fmax\u002F264\u002F1*RdVZMdvfV3YiZTw6mX7yWA.png","width":264,"height":140}}},"88d9857e584e":{"name":"LEVEL","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fmiro.medium.com\u002Fmax\u002F540\u002F1*JqYMhNX6KNNb2UlqGqO2WQ.png","width":540,"height":108}}},"7b6769f2748b":{"name":"Marker","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fcdn-images-1.medium.com\u002Fmax\u002F383\u002F1*haCUs0wF6TgOOvfoY-jEoQ@2x.png","width":383,"height":92}}},"444d13b52878":{"name":"OneZero","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fmiro.medium.com\u002Fmax\u002F540\u002F1*cw32fIqCbRWzwJaoQw6BUg.png","width":540,"height":123}}},"8ccfed20cbb2":{"name":"Zora","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fmiro.medium.com\u002Fmax\u002F540\u002F1*tZUQqRcCCZDXjjiZ4bDvgQ.png","width":540,"height":106}}}},"embeddedPostIds":{"coronavirus":"cd3010f9d81f"},"sharedCdcMessaging":{"COVID_APPLICABLE_TAG_SLUGS":[],"COVID_APPLICABLE_TOPIC_NAMES":[],"COVID_APPLICABLE_TOPIC_NAMES_FOR_TOPIC_PAGE":[],"COVID_MESSAGES":{"tierA":{"text":"For more information on the novel coronavirus and Covid-19, visit cdc.gov.","markups":[{"start":66,"end":73,"href":"https:\u002F\u002Fwww.cdc.gov\u002Fcoronavirus\u002F2019-nCoV"}]},"tierB":{"text":"Anyone can publish on Medium per our Policies, but we don’t fact-check every story. For more info about the coronavirus, see cdc.gov.","markups":[{"start":37,"end":45,"href":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Fcategories\u002F201931128-Policies-Safety"},{"start":125,"end":132,"href":"https:\u002F\u002Fwww.cdc.gov\u002Fcoronavirus\u002F2019-nCoV"}]},"paywall":{"text":"This article has been made free for everyone, thanks to Medium Members. For more information on the novel coronavirus and Covid-19, visit cdc.gov.","markups":[{"start":56,"end":70,"href":"https:\u002F\u002Fmedium.com\u002Fmembership"},{"start":138,"end":145,"href":"https:\u002F\u002Fwww.cdc.gov\u002Fcoronavirus\u002F2019-nCoV"}]},"unbound":{"text":"This article is free for everyone, thanks to Medium Members. For more information on the novel coronavirus and Covid-19, visit cdc.gov.","markups":[{"start":45,"end":59,"href":"https:\u002F\u002Fmedium.com\u002Fmembership"},{"start":127,"end":134,"href":"https:\u002F\u002Fwww.cdc.gov\u002Fcoronavirus\u002F2019-nCoV"}]}},"COVID_BANNER_POST_ID_OVERRIDE_WHITELIST":["3b31a67bff4a"]},"sharedVoteMessaging":{"TAGS":["politics","election-2020","government","us-politics","election","2020-presidential-race","trump","donald-trump","democrats","republicans","congress","republican-party","democratic-party","biden","joe-biden","maga"],"TOPICS":["politics","election"],"MESSAGE":{"text":"Find out more about the U.S. election results here.","markups":[{"start":46,"end":50,"href":"https:\u002F\u002Fcookpolitical.com\u002F2020-national-popular-vote-tracker"}]},"EXCLUDE_POSTS":["397ef29e3ca5"]},"embedPostRules":[],"recircOptions":{"v1":{"limit":3},"v2":{"limit":8}},"braintreeClientKey":"production_zjkj96jm_m56f8fqpf7ngnrd4","braintree":{"enabled":true,"merchantId":"m56f8fqpf7ngnrd4","merchantAccountId":{"usd":"AMediumCorporation_instant","eur":"amediumcorporation_EUR","cad":"amediumcorporation_CAD"},"publicKey":"ds2nn34bg2z7j5gd","braintreeEnvironment":"production","dashboardUrl":"https:\u002F\u002Fwww.braintreegateway.com\u002Fmerchants","gracePeriodDurationInDays":14,"mediumMembershipPlanId":{"monthly":"ce105f8c57a3","monthlyV2":"e8a5e126-792b-4ee6-8fba-d574c1b02fc5","monthlyWithTrial":"d5ee3dbe3db8","monthlyPremium":"fa741a9b47a2","yearly":"a40ad4a43185","yearlyV2":"3815d7d6-b8ca-4224-9b8c-182f9047866e","yearlyStaff":"d74fb811198a","yearlyWithTrial":"b3bc7350e5c7","yearlyPremium":"e21bd2c12166","monthlyOneYearFree":"e6c0637a-2bad-4171-ab4f-3c268633d83c","monthly25PercentOffFirstYear":"235ecc62-0cdb-49ae-9378-726cd21c504b","monthly20PercentOffFirstYear":"ba518864-9c13-4a99-91ca-411bf0cac756","monthly15PercentOffFirstYear":"594c029b-9f89-43d5-88f8-8173af4e070e","monthly10PercentOffFirstYear":"c6c7bc9a-40f2-4b51-8126-e28511d5bdb0","monthlyForStudents":"629ebe51-da7d-41fd-8293-34cd2f2030a8","yearlyOneYearFree":"78ba7be9-0d9f-4ece-aa3e-b54b826f2bf1","yearly25PercentOffFirstYear":"2dbb010d-bb8f-4eeb-ad5c-a08509f42d34","yearly20PercentOffFirstYear":"47565488-435b-47f8-bf93-40d5fbe0ebc8","yearly15PercentOffFirstYear":"8259809b-0881-47d9-acf7-6c001c7f720f","yearly10PercentOffFirstYear":"9dd694fb-96e1-472c-8d9e-3c868d5c1506","yearlyForStudents":"e29345ef-ab1c-4234-95c5-70e50fe6bc23","monthlyCad":"p52orjkaceei","yearlyCad":"h4q9g2up9ktt"},"braintreeDiscountId":{"oneMonthFree":"MONTHS_FREE_01","threeMonthsFree":"MONTHS_FREE_03","sixMonthsFree":"MONTHS_FREE_06","fiftyPercentOffOneYear":"FIFTY_PERCENT_OFF_ONE_YEAR"},"3DSecureVersion":"2","defaultCurrency":"usd","providerPlanIdCurrency":{"4ycw":"usd","rz3b":"usd","3kqm":"usd","jzw6":"usd","c2q2":"usd","nnsw":"usd","q8qw":"usd","d9y6":"usd","fx7w":"cad","nwf2":"cad"}},"paypalClientId":"AXj1G4fotC2GE8KzWX9mSxCH1wmPE3nJglf4Z2ig_amnhvlMVX87otaq58niAg9iuLktVNF_1WCMnN7v","paypal":{"host":"https:\u002F\u002Fapi.paypal.com:443","clientMode":"production","serverMode":"live","webhookId":"4G466076A0294510S","monthlyPlan":{"planId":"P-9WR0658853113943TMU5FDQA","name":"Medium Membership (Monthly) with setup fee","description":"Unlimited access to the best and brightest stories on Medium. Membership billed monthly."},"yearlyPlan":{"planId":"P-7N8963881P8875835MU5JOPQ","name":"Medium Membership (Annual) with setup fee","description":"Unlimited access to the best and brightest stories on Medium. Membership billed annually."},"oneYearGift":{"name":"Medium Membership (1 Year, Digital Gift Code)","description":"Unlimited access to the best and brightest stories on Medium. Gift codes can be redeemed at medium.com\u002Fredeem.","price":"50.00","currency":"USD","sku":"membership-gift-1-yr"},"oldMonthlyPlan":{"planId":"P-96U02458LM656772MJZUVH2Y","name":"Medium Membership (Monthly)","description":"Unlimited access to the best and brightest stories on Medium. Membership billed monthly."},"oldYearlyPlan":{"planId":"P-59P80963JF186412JJZU3SMI","name":"Medium Membership (Annual)","description":"Unlimited access to the best and brightest stories on Medium. Membership billed annually."},"monthlyPlanWithTrial":{"planId":"P-66C21969LR178604GJPVKUKY","name":"Medium Membership (Monthly) with setup fee","description":"Unlimited access to the best and brightest stories on Medium. Membership billed monthly."},"yearlyPlanWithTrial":{"planId":"P-6XW32684EX226940VKCT2MFA","name":"Medium Membership (Annual) with setup fee","description":"Unlimited access to the best and brightest stories on Medium. Membership billed annually."},"oldMonthlyPlanNoSetupFee":{"planId":"P-4N046520HR188054PCJC7LJI","name":"Medium Membership (Monthly)","description":"Unlimited access to the best and brightest stories on Medium. Membership billed monthly."},"oldYearlyPlanNoSetupFee":{"planId":"P-7A4913502Y5181304CJEJMXQ","name":"Medium Membership (Annual)","description":"Unlimited access to the best and brightest stories on Medium. Membership billed annually."},"sdkUrl":"https:\u002F\u002Fwww.paypal.com\u002Fsdk\u002Fjs"},"stripePublishableKey":"pk_live_7FReX44VnNIInZwrIIx6ghjl","log":{"json":true,"level":"info"},"imageUploadMaxSizeMb":25,"staffPicks":{"title":"Staff Picks","catalogId":"c7bc6e1ee00f"}},"session":{"xsrf":""}}</script><script>window.__APOLLO_STATE__ = {"ROOT_QUERY":{"__typename":"Query","viewer":null,"collectionByDomainOrSlug({\"domainOrSlug\":\"code.likeagirl.io\"})":{"__ref":"Collection:811ec52eb09a"},"postResult({\"id\":\"aeaa178bbf9a\"})":{"__ref":"Post:aeaa178bbf9a"},"variantFlags":[{"__typename":"VariantFlag","name":"enable_ios_dynamic_paywall_programming","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"android_enable_friend_links_creation","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_aurora_pub_follower_page","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_intrinsic_automatic_actions","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_recirc_model","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_sprig","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"allow_test_auth","valueType":{"__typename":"VariantFlagString","value":"disallow"}},{"__typename":"VariantFlag","name":"enable_configure_pronouns","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_automod","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_braintree_trial_membership","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_update_explore_wtf","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_entities_to_follow_v2","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_moc_load_processor_first_story","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_publication_hierarchy_web","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"android_enable_friend_links_postpage_banners","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_author_cards_byline","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_tribute_landing_page","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"reader_fair_distribution_non_qp","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_google_one_tap","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_lite_server_upstream_deadlines","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_pre_pp_v4","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_android_offline_reading","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_update_topic_portals_wtf","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_rex_aggregator_v2","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_deprecate_legacy_providers_v3","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_google_webhook","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_lo_homepage","valueType":{"__typename":"VariantFlagString","value":"control"}},{"__typename":"VariantFlag","name":"rex_generator_max_candidates","valueType":{"__typename":"VariantFlagNumber","value":1000}},{"__typename":"VariantFlag","name":"enable_explicit_signals_updated_post_previews","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"textshots_userid","valueType":{"__typename":"VariantFlagString","value":""}},{"__typename":"VariantFlag","name":"enable_iceland_forced_android","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_new_stripe_customers","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_diversification_rex","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_boost_nia_v01","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_newsletter_lo_flow_custom_domains","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_post_bottom_responses_input","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_susi_redesign_ios","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"android_enable_syntax_highlight","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"can_receive_tips_v0","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_android_miro_v2","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"reengagement_notification_duration","valueType":{"__typename":"VariantFlagNumber","value":3}},{"__typename":"VariantFlag","name":"enable_mastodon_for_members","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_explicit_signals","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_recaptcha_enterprise","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_tag_recs","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"ios_in_app_free_trial","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_bg_post_post","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_starspace","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_mastodon_avatar_upload","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_recommended_publishers_query","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"android_rating_prompt_stories_read_threshold","valueType":{"__typename":"VariantFlagNumber","value":2}},{"__typename":"VariantFlag","name":"enable_ios_dynamic_paywall_aspiriational","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"allow_signup","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_mastodon_for_members_username_selection","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_ios_autorefresh","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"ios_enable_friend_links_postpage_banners","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_braintree_google_pay","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_conversion_model_v2","valueType":{"__typename":"VariantFlagString","value":"group_2"}},{"__typename":"VariantFlag","name":"enable_ml_rank_rex_anno","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_switch_plan_premium_tier","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"available_monthly_premium_plan","valueType":{"__typename":"VariantFlagString","value":"12a660186432"}},{"__typename":"VariantFlag","name":"enable_sharer_create_post_share_key","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"limit_post_referrers","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"coronavirus_topic_recirc","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_android_dynamic_programming_paywall","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_creator_welcome_email","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"android_enable_image_sharer","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_author_cards","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_moc_load_processor_all_recs_surfaces","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_pill_based_home_feed","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"ios_enable_home_post_menu","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"allow_access","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"android_enable_topic_portals","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_ios_offline_reading","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_simplified_digest_v2_b","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"android_enable_editor_new_publishing_flow","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_apple_sign_in","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"ios_enable_verified_book_author","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"skip_fs_cache_user_vals","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_android_dynamic_aspirational_paywall","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_rito_upstream_deadlines","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"ios_social_share_sheet","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"signup_services","valueType":{"__typename":"VariantFlagString","value":"twitter,facebook,google,email,google-fastidv,google-one-tap,apple"}},{"__typename":"VariantFlag","name":"enable_android_verified_author","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_susi_redesign_android","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"ios_display_paywall_after_onboarding","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"ios_enable_friend_links_creation","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"price_smoke_test_monthly","valueType":{"__typename":"VariantFlagString","value":""}},{"__typename":"VariantFlag","name":"enable_medium2_kbfd","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_premium_tier_badge","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_seamless_social_sharing","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"onboarding_tags_from_top_views","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"disable_partner_program_enrollment","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_lite_homepage","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_pp_country_expansion","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_lite_response_markup","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_maim_the_meter","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"ios_enable_lock_responses","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"can_send_tips_v0","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_braintree_apple_pay","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_braintree_client","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_lite_continue_this_thread","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_ranker_v10","valueType":{"__typename":"VariantFlagString","value":"control"}},{"__typename":"VariantFlag","name":"enable_cache_less_following_feed","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_apple_webhook","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"android_enable_lists_v2","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_branch_io","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_new_manage_membership_flow","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"android_two_hour_refresh","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_braintree_webhook","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_eventstats_event_processing","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_see_pronouns","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"num_post_bottom_responses_to_show","valueType":{"__typename":"VariantFlagString","value":"3"}},{"__typename":"VariantFlag","name":"enable_auto_follow_on_subscribe","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_app_flirty_thirty","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_ios_easy_resubscribe","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_rex_reading_history","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_tipping_v0_ios","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"glyph_font_set","valueType":{"__typename":"VariantFlagString","value":"m2-unbound-source-serif-pro"}},{"__typename":"VariantFlag","name":"enable_bayesian_average_pub_search","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_sharer_validate_post_share_key","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"available_annual_premium_plan","valueType":{"__typename":"VariantFlagString","value":"4a442ace1476"}},{"__typename":"VariantFlag","name":"enable_moc_load_processor_c","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_billing_frequency_on_step2","valueType":{"__typename":"VariantFlagString","value":"control"}},{"__typename":"VariantFlag","name":"enable_conversion_ranker_v2","valueType":{"__typename":"VariantFlagString","value":"control"}},{"__typename":"VariantFlag","name":"ios_remove_twitter_onboarding_step","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_import","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_rex_new_push_notification_endpoint","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_speechify_ios","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"mobile_custom_app_icon","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"available_annual_plan","valueType":{"__typename":"VariantFlagString","value":"2c754bcc2995"}},{"__typename":"VariantFlag","name":"enable_footer_app_buttons","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_speechify_widget","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"limit_user_follows","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"available_monthly_plan","valueType":{"__typename":"VariantFlagString","value":"60e220181034"}},{"__typename":"VariantFlag","name":"redefined_top_posts","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"signin_services","valueType":{"__typename":"VariantFlagString","value":"twitter,facebook,google,email,google-fastidv,google-one-tap,apple"}},{"__typename":"VariantFlag","name":"enable_marketing_emails","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_tick_landing_page","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_tipping_v0_android","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_group_gifting","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_post_bottom_responses","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_verifications_service","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"price_smoke_test_yearly","valueType":{"__typename":"VariantFlagString","value":""}},{"__typename":"VariantFlag","name":"enable_abandoned_cart_promotion_email","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_members_only_audio","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_pp_v4","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"browsable_stream_config_bucket","valueType":{"__typename":"VariantFlagString","value":"curated-topics"}},{"__typename":"VariantFlag","name":"enable_lite_archive_page","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"goliath_externalsearch_enable_comment_deindexation","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"ios_iceland_nux","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_updated_pub_recs_ui","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_legacy_feed_in_iceland","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_braintree_integration","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_braintree_paypal","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_premium_tier","valueType":{"__typename":"VariantFlagBoolean","value":true}}]},"ImageMetadata:1*DMSrHxhNUlnXIk2qSskkGg.png":{"__typename":"ImageMetadata","id":"1*DMSrHxhNUlnXIk2qSskkGg.png"},"Collection:811ec52eb09a":{"__typename":"Collection","id":"811ec52eb09a","favicon":{"__ref":"ImageMetadata:1*DMSrHxhNUlnXIk2qSskkGg.png"},"customStyleSheet":{"__ref":"CustomStyleSheet:5caaed7acd54"},"colorPalette":{"__typename":"ColorPalette","highlightSpectrum":{"__typename":"ColorSpectrum","backgroundColor":"#FFFFFFFF","colorPoints":[{"__typename":"ColorPoint","color":"#FFEEF3FF","point":0},{"__typename":"ColorPoint","color":"#FFEBF1FF","point":0.1},{"__typename":"ColorPoint","color":"#FFE8F0FF","point":0.2},{"__typename":"ColorPoint","color":"#FFE5EEFF","point":0.3},{"__typename":"ColorPoint","color":"#FFE1ECFF","point":0.4},{"__typename":"ColorPoint","color":"#FFDEEAFF","point":0.5},{"__typename":"ColorPoint","color":"#FFDBE9FF","point":0.6},{"__typename":"ColorPoint","color":"#FFD8E7FF","point":0.7},{"__typename":"ColorPoint","color":"#FFD4E5FF","point":0.8},{"__typename":"ColorPoint","color":"#FFD1E3FF","point":0.9},{"__typename":"ColorPoint","color":"#FFCDE2FF","point":1}]},"defaultBackgroundSpectrum":{"__typename":"ColorSpectrum","backgroundColor":"#FFFFFFFF","colorPoints":[{"__typename":"ColorPoint","color":"#FF6D87B3","point":0},{"__typename":"ColorPoint","color":"#FF677DA5","point":0.1},{"__typename":"ColorPoint","color":"#FF607497","point":0.2},{"__typename":"ColorPoint","color":"#FF586A89","point":0.3},{"__typename":"ColorPoint","color":"#FF50607B","point":0.4},{"__typename":"ColorPoint","color":"#FF48556C","point":0.5},{"__typename":"ColorPoint","color":"#FF404B5E","point":0.6},{"__typename":"ColorPoint","color":"#FF37404F","point":0.7},{"__typename":"ColorPoint","color":"#FF2D3440","point":0.8},{"__typename":"ColorPoint","color":"#FF222831","point":0.9},{"__typename":"ColorPoint","color":"#FF171A21","point":1}]},"tintBackgroundSpectrum":{"__typename":"ColorSpectrum","backgroundColor":"#FF8DA7D5","colorPoints":[{"__typename":"ColorPoint","color":"#FF8DA7D5","point":0},{"__typename":"ColorPoint","color":"#FF99B0DB","point":0.1},{"__typename":"ColorPoint","color":"#FFA4BAE0","point":0.2},{"__typename":"ColorPoint","color":"#FFB0C3E6","point":0.3},{"__typename":"ColorPoint","color":"#FFBBCCEB","point":0.4},{"__typename":"ColorPoint","color":"#FFC6D5F0","point":0.5},{"__typename":"ColorPoint","color":"#FFD1DDF5","point":0.6},{"__typename":"ColorPoint","color":"#FFDCE6FA","point":0.7},{"__typename":"ColorPoint","color":"#FFE7EEFF","point":0.8},{"__typename":"ColorPoint","color":"#FFF1F7FF","point":0.9},{"__typename":"ColorPoint","color":"#FFFCFFFF","point":1}]}},"domain":"code.likeagirl.io","slug":"code-like-a-girl","googleAnalyticsId":"UA-71317007-1","editors":[{"__typename":"CollectionMastheadUserItem","user":{"__ref":"User:96f07dc9e18"}},{"__typename":"CollectionMastheadUserItem","user":{"__ref":"User:dd97c17f2bb5"}}],"name":"Code Like A Girl","avatar":{"__ref":"ImageMetadata:1*rt1mE2Q0rmKsUcJX2ewFoA.png"},"description":"Welcome to Code Like A Girl, a space that celebrates redefining society's perceptions of women in technology. Share your story with us!","subscriberCount":49879,"latestPostsConnection({\"paging\":{\"limit\":1}})":{"__typename":"PostConnection","posts":[{"__ref":"Post:c681d2d72a84"}]},"viewerEdge":{"__ref":"CollectionViewerEdge:collectionId:811ec52eb09a-viewerId:lo_0e9186abf8a7"},"twitterUsername":null,"facebookPageId":null,"logo":{"__ref":"ImageMetadata:1*7c38e-HQi4NrKrfcuftX7g.png"}},"CustomStyleSheet:5caaed7acd54":{"__typename":"CustomStyleSheet","id":"5caaed7acd54","global":{"__typename":"GlobalStyles","colorPalette":{"__typename":"StyleSheetColorPalette","primary":{"__typename":"ColorValue","colorPalette":{"__typename":"ColorPalette","highlightSpectrum":{"__typename":"ColorSpectrum","backgroundColor":"#FFFFFFFF","colorPoints":[{"__typename":"ColorPoint","color":"#FFEEF3FF","point":0},{"__typename":"ColorPoint","color":"#FFEBF1FF","point":0.1},{"__typename":"ColorPoint","color":"#FFE8F0FF","point":0.2},{"__typename":"ColorPoint","color":"#FFE5EEFF","point":0.3},{"__typename":"ColorPoint","color":"#FFE1ECFF","point":0.4},{"__typename":"ColorPoint","color":"#FFDEEAFF","point":0.5},{"__typename":"ColorPoint","color":"#FFDBE9FF","point":0.6},{"__typename":"ColorPoint","color":"#FFD8E7FF","point":0.7},{"__typename":"ColorPoint","color":"#FFD4E5FF","point":0.8},{"__typename":"ColorPoint","color":"#FFD1E3FF","point":0.9},{"__typename":"ColorPoint","color":"#FFCDE2FF","point":1}]},"defaultBackgroundSpectrum":{"__typename":"ColorSpectrum","backgroundColor":"#FFFFFFFF","colorPoints":[{"__typename":"ColorPoint","color":"#FF6D87B3","point":0},{"__typename":"ColorPoint","color":"#FF677DA5","point":0.1},{"__typename":"ColorPoint","color":"#FF607497","point":0.2},{"__typename":"ColorPoint","color":"#FF586A89","point":0.3},{"__typename":"ColorPoint","color":"#FF50607B","point":0.4},{"__typename":"ColorPoint","color":"#FF48556C","point":0.5},{"__typename":"ColorPoint","color":"#FF404B5E","point":0.6},{"__typename":"ColorPoint","color":"#FF37404F","point":0.7},{"__typename":"ColorPoint","color":"#FF2D3440","point":0.8},{"__typename":"ColorPoint","color":"#FF222831","point":0.9},{"__typename":"ColorPoint","color":"#FF171A21","point":1}]},"tintBackgroundSpectrum":{"__typename":"ColorSpectrum","backgroundColor":"#FF8da7d5","colorPoints":[{"__typename":"ColorPoint","color":"#FF8DA7D5","point":0},{"__typename":"ColorPoint","color":"#FF99B0DB","point":0.1},{"__typename":"ColorPoint","color":"#FFA4BAE0","point":0.2},{"__typename":"ColorPoint","color":"#FFB0C3E6","point":0.3},{"__typename":"ColorPoint","color":"#FFBBCCEB","point":0.4},{"__typename":"ColorPoint","color":"#FFC6D5F0","point":0.5},{"__typename":"ColorPoint","color":"#FFD1DDF5","point":0.6},{"__typename":"ColorPoint","color":"#FFDCE6FA","point":0.7},{"__typename":"ColorPoint","color":"#FFE7EEFF","point":0.8},{"__typename":"ColorPoint","color":"#FFF1F7FF","point":0.9},{"__typename":"ColorPoint","color":"#FFFCFFFF","point":1}]}}},"background":null},"fonts":{"__typename":"StyleSheetFonts","font1":{"__typename":"StyleSheetFont","name":"SANS_SERIF_1"},"font2":{"__typename":"StyleSheetFont","name":"SANS_SERIF_1"},"font3":{"__typename":"StyleSheetFont","name":"SERIF_2"}}},"header":{"__typename":"HeaderStyles","backgroundImage":null}},"User:96f07dc9e18":{"__typename":"User","id":"96f07dc9e18"},"User:dd97c17f2bb5":{"__typename":"User","id":"dd97c17f2bb5"},"ImageMetadata:1*rt1mE2Q0rmKsUcJX2ewFoA.png":{"__typename":"ImageMetadata","id":"1*rt1mE2Q0rmKsUcJX2ewFoA.png"},"User:ba3749527482":{"__typename":"User","id":"ba3749527482","customDomainState":null,"hasSubdomain":false,"username":"sajinimeddawela"},"Post:c681d2d72a84":{"__typename":"Post","id":"c681d2d72a84","firstPublishedAt":1732283823132,"creator":{"__ref":"User:ba3749527482"},"collection":{"__ref":"Collection:811ec52eb09a"},"isSeries":false,"mediumUrl":"https:\u002F\u002Fcode.likeagirl.io\u002Ftop-5-automation-tools-for-qa-beginners-c681d2d72a84","sequence":null,"uniqueSlug":"top-5-automation-tools-for-qa-beginners-c681d2d72a84"},"LinkedAccounts:e1645eb9431":{"__typename":"LinkedAccounts","mastodon":null,"id":"e1645eb9431"},"UserViewerEdge:userId:e1645eb9431-viewerId:lo_0e9186abf8a7":{"__typename":"UserViewerEdge","id":"userId:e1645eb9431-viewerId:lo_0e9186abf8a7","isFollowing":false,"isUser":false,"isMuting":false},"NewsletterV3:a8a516c6c16":{"__typename":"NewsletterV3","id":"a8a516c6c16","type":"NEWSLETTER_TYPE_AUTHOR","slug":"e1645eb9431","name":"e1645eb9431","collection":null,"user":{"__ref":"User:e1645eb9431"}},"User:e1645eb9431":{"__typename":"User","id":"e1645eb9431","name":"Cleopatra Douglas","username":"cleopatradouglas","newsletterV3":{"__ref":"NewsletterV3:a8a516c6c16"},"linkedAccounts":{"__ref":"LinkedAccounts:e1645eb9431"},"isSuspended":false,"imageId":"1*YuPpJL1Kci8SZnY0hmEQGw@2x.jpeg","mediumMemberAt":1645761568000,"verifications":{"__typename":"VerifiedInfo","isBookAuthor":false},"socialStats":{"__typename":"SocialStats","followerCount":418,"followingCount":301,"collectionFollowingCount":30},"customDomainState":{"__typename":"CustomDomainState","live":{"__typename":"CustomDomain","domain":"cleopatradouglas.medium.com"}},"hasSubdomain":true,"bio":"My Substack NewsLetter: https:\u002F\u002Fthejvmrabbithole.substack.com","isPartnerProgramEnrolled":true,"viewerEdge":{"__ref":"UserViewerEdge:userId:e1645eb9431-viewerId:lo_0e9186abf8a7"},"viewerIsUser":false,"postSubscribeMembershipUpsellShownAt":0,"membership":{"__ref":"Membership:2f1c7e8248ba"},"allowNotes":true,"twitterScreenName":"succedor23"},"Membership:2f1c7e8248ba":{"__typename":"Membership","tier":"MEMBER","id":"2f1c7e8248ba"},"Paragraph:1a1463eadcc0_0":{"__typename":"Paragraph","id":"1a1463eadcc0_0","name":"5736","type":"H3","href":null,"layout":null,"metadata":null,"text":"Mastering Futures in Scala: 3 Techniques to Avoid Blocking and Boost Efficiency","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"ImageMetadata:1*i-3ZPps2Vxa1545Tic0WiQ.png":{"__typename":"ImageMetadata","id":"1*i-3ZPps2Vxa1545Tic0WiQ.png","originalHeight":271,"originalWidth":732,"focusPercentX":null,"focusPercentY":null,"alt":null},"Paragraph:1a1463eadcc0_1":{"__typename":"Paragraph","id":"1a1463eadcc0_1","name":"7a77","type":"IMG","href":null,"layout":"INSET_CENTER","metadata":{"__ref":"ImageMetadata:1*i-3ZPps2Vxa1545Tic0WiQ.png"},"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:1a1463eadcc0_2":{"__typename":"Paragraph","id":"1a1463eadcc0_2","name":"bc90","type":"P","href":null,"layout":null,"metadata":null,"text":"Read Free — Here.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":12,"end":16,"href":"https:\u002F\u002Fcleopatradouglas.medium.com\u002Faeaa178bbf9a?source=friends_link&sk=a9a0c1d7777b97adedf7e3b4cb302e65","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":0,"end":17,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:1a1463eadcc0_3":{"__typename":"Paragraph","id":"1a1463eadcc0_3","name":"dd15","type":"P","href":null,"layout":null,"metadata":null,"text":"As a backend engineer, I often build endpoints and call other external endpoints to perform tasks or augment data.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:1a1463eadcc0_4":{"__typename":"Paragraph","id":"1a1463eadcc0_4","name":"31f6","type":"P","href":null,"layout":null,"metadata":null,"text":"As you can imagine, this involves having a lot of Futures when working with scala. After only a year and a couple of months (including a few days ago) of asking what’s wrong with my code, I think I have figured out a good framework for avoiding blocking issues (as much as possible).","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:1a1463eadcc0_5":{"__typename":"Paragraph","id":"1a1463eadcc0_5","name":"b69b","type":"H4","href":null,"layout":null,"metadata":null,"text":"Simplify Chaining of Multiple Futures","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:1a1463eadcc0_6":{"__typename":"Paragraph","id":"1a1463eadcc0_6","name":"1ff8","type":"P","href":null,"layout":null,"metadata":null,"text":"Using for-yield with futures allows me to run them without waiting for each future to complete one at a time. Instead, it’ll run them concurrently and continue when all futures are complete, which can reduce the runtime and avoid blocking issues.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"CODE","start":6,"end":9,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"CODE","start":10,"end":15,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:1a1463eadcc0_7":{"__typename":"Paragraph","id":"1a1463eadcc0_7","name":"cd04","type":"P","href":null,"layout":null,"metadata":null,"text":"For example, if I have multiple futures, I want to call and combine, using. for-yield is both non-blocking and efficient:","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"CODE","start":76,"end":79,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"CODE","start":80,"end":85,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:1a1463eadcc0_8":{"__typename":"Paragraph","id":"1a1463eadcc0_8","name":"cac5","type":"PRE","href":null,"layout":null,"metadata":null,"text":"import scala.concurrent.Future\nimport scala.concurrent.ExecutionContext.Implicits.global\n\ndef callMultipleFutures(): Future[ResultType] = {\n for {\n result1 \u003C- future1()\n result2 \u003C- future2(result1)\n result3 \u003C- future3(result1, result2)\n } yield combineResults(result1, result2, result3)\n}","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":{"__typename":"CodeBlockMetadata","mode":"EXPLICIT","lang":"java"},"iframe":null,"mixtapeMetadata":null},"CollectionViewerEdge:collectionId:811ec52eb09a-viewerId:lo_0e9186abf8a7":{"__typename":"CollectionViewerEdge","id":"collectionId:811ec52eb09a-viewerId:lo_0e9186abf8a7","isEditor":false,"isMuting":false},"ImageMetadata:1*7c38e-HQi4NrKrfcuftX7g.png":{"__typename":"ImageMetadata","id":"1*7c38e-HQi4NrKrfcuftX7g.png","originalWidth":600,"originalHeight":72},"PostViewerEdge:postId:aeaa178bbf9a-viewerId:lo_0e9186abf8a7":{"__typename":"PostViewerEdge","shouldIndexPostForExternalSearch":true,"id":"postId:aeaa178bbf9a-viewerId:lo_0e9186abf8a7"},"Tag:scala":{"__typename":"Tag","id":"scala","displayTitle":"Scala","normalizedTagSlug":"scala"},"Tag:blocking":{"__typename":"Tag","id":"blocking","displayTitle":"Blocking","normalizedTagSlug":"blocking"},"Tag:scala-futures":{"__typename":"Tag","id":"scala-futures","displayTitle":"Scala Futures","normalizedTagSlug":"scala-futures"},"Tag:java":{"__typename":"Tag","id":"java","displayTitle":"Java","normalizedTagSlug":"java"},"Tag:programming":{"__typename":"Tag","id":"programming","displayTitle":"Programming","normalizedTagSlug":"programming"},"Post:aeaa178bbf9a":{"__typename":"Post","id":"aeaa178bbf9a","collection":{"__ref":"Collection:811ec52eb09a"},"content({\"postMeteringOptions\":{}})":{"__typename":"PostContent","isLockedPreviewOnly":true,"bodyModel":{"__typename":"RichText","sections":[{"__typename":"Section","name":null,"startIndex":0,"textLayout":null,"imageLayout":null,"backgroundImage":null,"videoLayout":null,"backgroundVideo":null}],"paragraphs":[{"__ref":"Paragraph:1a1463eadcc0_0"},{"__ref":"Paragraph:1a1463eadcc0_1"},{"__ref":"Paragraph:1a1463eadcc0_2"},{"__ref":"Paragraph:1a1463eadcc0_3"},{"__ref":"Paragraph:1a1463eadcc0_4"},{"__ref":"Paragraph:1a1463eadcc0_5"},{"__ref":"Paragraph:1a1463eadcc0_6"},{"__ref":"Paragraph:1a1463eadcc0_7"},{"__ref":"Paragraph:1a1463eadcc0_8"}]},"validatedShareKey":"","shareKeyCreator":null},"creator":{"__ref":"User:e1645eb9431"},"inResponseToEntityType":null,"isLocked":true,"isMarkedPaywallOnly":false,"lockedSource":"LOCKED_POST_SOURCE_UGC","mediumUrl":"https:\u002F\u002Fcode.likeagirl.io\u002Fmastering-futures-in-scala-3-techniques-to-avoid-blocking-and-boost-efficiency-aeaa178bbf9a","primaryTopic":null,"topics":[{"__typename":"Topic","slug":"programming"}],"isPublished":true,"latestPublishedVersion":"1a1463eadcc0","visibility":"LOCKED","postResponses":{"__typename":"PostResponses","count":0},"clapCount":82,"allowResponses":true,"isLimitedState":false,"title":"Mastering Futures in Scala: 3 Techniques to Avoid Blocking and Boost Efficiency","isSeries":false,"sequence":null,"uniqueSlug":"mastering-futures-in-scala-3-techniques-to-avoid-blocking-and-boost-efficiency-aeaa178bbf9a","socialTitle":"","socialDek":"","canonicalUrl":"","metaDescription":"","latestPublishedAt":1730812562511,"readingTime":2.0679245283018868,"previewContent":{"__typename":"PreviewContent","subtitle":"Read Free — Here."},"previewImage":{"__ref":"ImageMetadata:1*i-3ZPps2Vxa1545Tic0WiQ.png"},"isShortform":false,"seoTitle":"","firstPublishedAt":1730812562511,"updatedAt":1731544741919,"shortformType":"SHORTFORM_TYPE_LINK","seoDescription":"","viewerEdge":{"__ref":"PostViewerEdge:postId:aeaa178bbf9a-viewerId:lo_0e9186abf8a7"},"isSuspended":false,"license":"ALL_RIGHTS_RESERVED","tags":[{"__ref":"Tag:scala"},{"__ref":"Tag:blocking"},{"__ref":"Tag:scala-futures"},{"__ref":"Tag:java"},{"__ref":"Tag:programming"}],"isNewsletter":false,"statusForCollection":"APPROVED","pendingCollection":null,"detectedLanguage":"en","wordCount":495,"layerCake":0,"responsesLocked":false}}</script><script src="https://cdn-client.medium.com/lite/static/js/manifest.b2314f6d.js"></script><script src="https://cdn-client.medium.com/lite/static/js/9865.1496d74a.js"></script><script src="https://cdn-client.medium.com/lite/static/js/main.24534aeb.js"></script><script src="https://cdn-client.medium.com/lite/static/js/instrumentation.d9108df7.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/reporting.ff22a7a5.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/9120.5df29668.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/5049.d1ead72d.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/4810.6318add7.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/6618.db187378.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/2707.b0942613.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/9977.5b3eb23a.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/8599.1ab63137.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/5250.9f9e01d2.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/6349.b071a958.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/2648.26563adf.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/8393.826a25fb.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/7079.67349d50.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/3735.afb7e926.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/5642.a2d9f6a1.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/6546.cd03f950.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/6834.08de95de.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/7346.72622eb9.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/2420.2a5e2d95.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/839.ca7937c2.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/7975.d195c6f1.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/2106.21ff89d3.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/7394.3d049572.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/2961.00a48598.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/8204.c4082863.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/4391.59acaed3.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/PostPage.MainContent.c8a11795.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/8414.6565ad5f.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/3974.8d3e0217.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/2527.a0afad8a.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/PostResponsesContent.36c2ecf4.chunk.js"></script><script>window.main();</script><script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'8e7584b56f1f87d5',t:'MTczMjQxMDYxOS4wMDAwMDA='};var a=document.createElement('script');a.nonce='';a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script></body></html>