I'm having trouble with OCaml Async. I wrote a small server with it, and right now I'm trying to unit test that server. Here's my code for the server: let _main ()= print_endline "Server running"; let handler = print_endline in let socket = Tcp.on_port 5554 in let server = Tcp.Server.create socket (fun addr r w -> (Reader.contents r) >>| handler; (Writer.write w "got it")) in server In my unit test code I have: let test_shutdown test_ctxt = Thread_safe.block_on_async_exn (fun () -> ( print_endline "test_shutdown"; let server = Server._main () in server >>= fun server -> let where = Tcp.to_host_and_port "127.0.0.1" 5554 in Tcp.connect where >>= fun s -> let socket, r, w = s in ignore (Writer.write w "kill"); ignore (Writer.flushed w); (Reader.recv r >>> function | `Ok result -> print_endline ("writing shutdown to server" ^ result) | `Eof -> ()); return () )); () I see test_shutdown and Server running, but not sign of "writing shutdown to server" or even "got it"; why isn't my server or even any of the connection executing?