public virtual WaitableTask <EncounterContent> GetEncounterData(User user, EncounterMetadata metadata)
        {
            var encounterData = new WaitableTask <EncounterContent>();
            var content       = ContentReader.GetNonImageContent(user, metadata);
            var imageData     = ImageDataReader.GetImageData(user, metadata);

            content.AddOnCompletedListener((result) => ProcessResults(encounterData, content, imageData));
            imageData.AddOnCompletedListener((result) => ProcessResults(encounterData, content, imageData));

            return(encounterData);
        }