public static IObservable <IDocument <T> > GetAndTouchDocumentObservable <T>(this IBucket bucket, string id, TimeSpan expiration) { return(Observable.FromAsync(() => bucket.GetAndTouchDocumentAsync <T>(id, expiration)) .Where(p => p.Status != ResponseStatus.KeyNotFound) .Select(p => { CheckResultForError(p); return p.Document; })); }