thanks for the working implementation. it goes too deep for me. i start to miss python's [trio](https://trio.readthedocs.io/en/stable/reference-core.html#a-simple-timeout-example): with trio.move_on_after(30): result = await do_http_get("https://...") print("result is", result) print("with block finished") Run
- after called `AsyncFuture.fail`, the future is still running haoliang
- after called `AsyncFuture.fail`, the future is still runn... arnetheduck
- after called `AsyncFuture.fail`, the future is still ... royneary
- after called `AsyncFuture.fail`, the future is st... dom96
- after called `AsyncFuture.fail`, the future i... royneary
- after called `AsyncFuture.fail`, the fut... dom96
- after called `AsyncFuture.fail`, the... royneary
- after called `AsyncFuture.fail`,... haoliang
- after called `AsyncFuture.fail`,... haoliang
- after called `AsyncFuture.fail`,... haoliang
- after called `AsyncFuture.fail`,... haoliang