Asynchronous programming for communication channels