public Task <ServerMessage> PrepareClientMessage(FlatBufferBuilder aBuilder) { var id = NextMsgId; // The client always increments the IDs on outgoing messages ClientMessage.AddId(aBuilder, id); var promise = new TaskCompletionSource <ServerMessage>(); _waitingMsgs.TryAdd(id, promise); Console.WriteLine($"Sending a client message with Id {id}"); return(promise.Task); }