public Task <WorkerResult> Run(IObserver observer, string asset, IScanRepository repository, object args)
 {
     this._observer = observer;
     return(this.ExecuteSafely(() =>
     {
         var http = new RestClient($"http://{Utility.GetIpv4Address()}:{Port}");
         return this.Run_Internal(ProxyObserver.Create(observer), http, asset, repository, args);
     }));
 }
 //template method pattern
 public abstract Task <object> Run_Internal(ProxyObserver observer, RestClient http, string asset, IScanRepository repository, object args);