public async Task <Appointment> Find(Guid id)
        {
            var messages = await _eventStream.LoadEvents(id);

            if (messages.Count == 0)
            {
                return(null);
            }

            var createdEventPayload = await messages.Dequeue().GetJsonData();

            var createdEvent = createdEventPayload.FromJson <AppointmentCreated>();

            var appointment = new Appointment(createdEvent);

            var changes = await LoadReplayableEvents(messages);

            appointment.ReplayEvents(changes);

            return(appointment);
        }