simple async server/client pattern