public IObservable <MissionProgress> MissionProgress() { return(Observable.Using(() => _missionServiceClient.SubscribeMissionProgress(new SubscribeMissionProgressRequest()).ResponseStream, reader => Observable.Create( async(IObserver <MissionProgress> observer) => { try { while (await reader.MoveNext()) { observer.OnNext(reader.Current.MissionProgress); } observer.OnCompleted(); } catch (Exception ex) { observer.OnError(ex); } }))); }