public IObservable <List <MissionItem> > DownloadMission() { return(Observable.Create <List <MissionItem> >(observer => { var downloadMissionResponse = _missionServiceClient.DownloadMission(new DownloadMissionRequest()); var missionResult = downloadMissionResponse.MissionResult; if (missionResult.Result == MissionResult.Types.Result.Success) { observer.OnNext(downloadMissionResponse.MissionItems.ToList()); } else { observer.OnError(new MissionException(missionResult.Result, missionResult.ResultStr)); } observer.OnCompleted(); return Task.FromResult(Disposable.Empty); })); }