public IObservable <Unit> UploadMission() { return(Observable.Create <Unit>(observer => { var uploadMissionResponse = _missionServiceClient.UploadMission(new UploadMissionRequest()); var missionResult = uploadMissionResponse.MissionResult; if (missionResult.Result == MissionResult.Types.Result.Success) { observer.OnCompleted(); } else { observer.OnError(new MissionException(missionResult.Result, missionResult.ResultStr)); } return Task.FromResult(Disposable.Empty); })); }