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); }