private IObservable<Unit> SynchronizeFile(IFileNotification file, IFileSynchronizerVisitor visitor) { return Observable.FromAsync(async ct => await file.Accept(ct, visitor), _notificationsScheduler) .Do(_ => { _transcodingResultNotifications.OnNext(FileTranscodingResultNotification.CreateSuccess(file)); _numberOfFilesAddedInTranscodingQueue.OnNext(-1); }) .Catch((Exception ex) => { _transcodingResultNotifications.OnNext(FileTranscodingResultNotification.CreateFailure(file, ex)); _numberOfFilesAddedInTranscodingQueue.OnNext(-1); return Observable.Return(Unit.Default, ImmediateScheduler.Instance); }); }