public Observe <T> GetDeserializedCachedAndRefreshedAsync <T>(Uri url, string cacheFile) where T : class { Observe <T> sequence = Observe.Empty <T>(); if (this.storage.Exists(cacheFile)) { sequence = this.storage.LoadJsonAsync <T>(cacheFile); } return(sequence.Concat( from cache in this.GetStreamAsync(url, false).Select(Json <T> .Instance.DeserializeFromStream) from _ in this.storage.SaveJsonAsync(cacheFile, cache) select cache)); }