<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/a-fetch-api-that-doesn-t-suck-by-a-twisted-definition-of-suck--odlz7oy6b" -->

---
title: A fetch() api that doesn&#x27;t suck (by a twisted definition...
description: A live-coding session exploring the design of a non-blocking HTTP client in Zig that avoids threads, callbacks, and async/await. The author implements a custom...
canonical: https://daily.dev/posts/a-fetch-api-that-doesn-t-suck-by-a-twisted-definition-of-suck--odlz7oy6b
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: A fetch() api that doesn&#x27;t suck (by a twisted definition of suck) | daily.dev
og:description: A live-coding session exploring the design of a non-blocking HTTP client in Zig that avoids threads, callbacks, and async/await. The author implements a custom...
og:url: https://daily.dev/posts/a-fetch-api-that-doesn-t-suck-by-a-twisted-definition-of-suck--odlz7oy6b
og:image: https://api.daily.dev/og/posts/ODlZ7OY6b.png
og:image:alt: A fetch() api that doesn&#x27;t suck (by a twisted definition of suck)
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# A fetch() api that doesn't suck (by a twisted definition of suck)

**[sphaerophoria](https://daily.dev/sources/sphaerophoria)** · 104 min read · 0 upvotes · 0 comments

## Summary

A live-coding session exploring the design of a non-blocking HTTP client in Zig that avoids threads, callbacks, and async/await. The author implements a custom event loop architecture using epoll with numeric IDs for dispatch, creating a state machine-based approach where connections are managed through object pools and event IDs map to specific handlers. The implementation demonstrates manual state management and connection lifecycle handling as an alternative to traditional async patterns.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://www.youtube.com/watch?v=ORcFpJTMsK0>

---

Tags: [#networking](https://daily.dev/tags/networking), [#zig](https://daily.dev/tags/zig)

[View this post on daily.dev](https://daily.dev/posts/a-fetch-api-that-doesn-t-suck-by-a-twisted-definition-of-suck--odlz7oy6b)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"A fetch() api that doesn't suck (by a twisted definition of suck)","url":"https://daily.dev/posts/a-fetch-api-that-doesn-t-suck-by-a-twisted-definition-of-suck--odlz7oy6b","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/a-fetch-api-that-doesn-t-suck-by-a-twisted-definition-of-suck--odlz7oy6b"},"datePublished":"2026-02-09T23:33:09.164Z","dateModified":"2026-02-09T23:58:59.730Z","description":"A live-coding session exploring the design of a non-blocking HTTP client in Zig that avoids threads, callbacks, and async/await. The author implements a custom...","image":"https://i.ytimg.com/vi/ORcFpJTMsK0/sddefault.jpg","thumbnailUrl":"https://i.ytimg.com/vi/ORcFpJTMsK0/sddefault.jpg","isAccessibleForFree":true,"articleSection":"sphaerophoria","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"sphaerophoria","logo":"https://media.daily.dev/image/upload/s--dgPUg2T7--/f_auto/v1728806109/logos/sphaerophoria","url":"https://daily.dev/sources/sphaerophoria"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/a-fetch-api-that-doesn-t-suck-by-a-twisted-definition-of-suck--odlz7oy6b","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"networking,zig","timeRequired":"PT104M","video":{"@type":"VideoObject","name":"A fetch() api that doesn't suck (by a twisted definition of suck)","description":"A live-coding session exploring the design of a non-blocking HTTP client in Zig that avoids threads, callbacks, and async/await. The author implements a custom...","thumbnailUrl":"https://i.ytimg.com/vi/ORcFpJTMsK0/sddefault.jpg","uploadDate":"2026-02-09T23:33:09.164Z","duration":"PT104M","url":"https://api.daily.dev/r/ODlZ7OY6b","embedUrl":"https://www.youtube.com/embed/ORcFpJTMsK0"}}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"sphaerophoria","item":"https://daily.dev/sources/sphaerophoria"},{"@type":"ListItem","position":3,"name":"A fetch() api that doesn't suck (by a twisted definition of suck)"}]}
```

