public async Task <string> GetFile(string path)
        {
            if (path is null)
            {
                throw new ArgumentNullException(nameof(path));
            }

            if (buffer.ContainsKey(path))
            {
                return(buffer[path]);
            }

            var data = "";

            if (await dataStore1.Exists(path))
            {
                data = await dataStore1.GetFile(path);
            }
            else if (dataStore2 != null && await dataStore2.Exists(path))
            {
                data = await dataStore2.GetFile(path);

                await dataStore1.SaveFile(path, data);
            }
            else
            {
                throw new FileNotFoundException(path);
            }

            buffer.Add(path, data);
            return(data);
        }
 public Task SaveFile(string path, string content)
 {
     if (dataStore2 != null)
     {
         return(dataStore2.SaveFile(path, content));
     }
     throw new NotImplementedException();
 }