Server.StartListen(token) token is global cancellation token source's token. For each new connection accepted, its forward token too for these methods (don't need to allocate own token source because it will not be used elsewhere). Connection.StartAsync(token) will forward too the token, its a blocking task that will complete both read/write tasks complete (or fail but exceptions proper logged). Connection.Disconnect() that send a disconnect packet to client.