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