package workers type worker interface { Start() error } func NewWorker(w worker) Worker { return Worker{ worker: w, } } type Worker struct { worker } func (w Worker) Start() { go func() { defer func() { if r := recover(); r != nil { err := errors.FromPanic(r) logging.GetLogger().Error("recovered from panic", zap.Error(err)) } }() err := w.worker.Start() if err != nil { logging.GetLogger().Error("worker error", zap.Error(err)) } }() }