Asyncio, twisted, tornado, gevent walk into a bar
Great article. I had the misfortune of writing a bunch of twisted code over a decade ago and I wanted to remind the author that twisted has a feature called "inline callbacks" that allow you to use yield. <a href="https://twisted.org/documents/16.4.1/core/howto/defer-intro.html#inline-callbacks-using-yield" rel="nofollow noreferrer">https://twisted.org/documents/16.4.1/core/howto/defer-intro....</a><p>So twisted code can actually look like:<p><pre><code>    @inlineCallbacks
    def doIt():
        responseBody = yield makeRequest("GET", "/users")
        returnValue(json.loads(responseBody))
</code></pre>
iirc `returnValue` throws an exception of a specific type. It's ugly, but it's also the logical implementation of async on top of yield/generators.