Create a channel with 2 ends that can communicate with each other in the same context. Calling send from one end will call the onRecv callback of the other end asynchronously. Calling close on either end will close the channel immediately (any message sent but not received will also not be received).