It's either your code, or your nim version. I'm using 1.5x and a MWE test
passed for me.
import asynchttpserver, asyncdispatch
var server = newAsyncHttpServer()
proc cb(req: Request) {.async.} =
await req.respond(Http200, "Hello World")
var t:Thread[int32]
proc handleThread(i:int32) {.thread.} =
echo "hi from thread"
proc ctrl_c_handler() {.noconv.} =
echo "ctrl-c hook invoked"
joinThread(t)
quit 0
proc init =
setControlCHook(ctrl_c_handler)
proc main =
createThread(t, handleThread, int32(0)) # define elsewhere
waitFor server.serve(Port(9090), cb)
init()
main()
Run