type JobWrapper … type Chain … // NewChain returns a Chain consisting of the given JobWrappers. func NewChain(c ...JobWrapper) Chain { … } // Then decorates the given job with all JobWrappers in the chain. // // This: // NewChain(m1, m2, m3).Then(job) // is equivalent to: // m1(m2(m3(job))) func (c Chain) Then(j Job) Job { … } // Recover panics in wrapped jobs and log them with the provided logger. func Recover(logger Logger) JobWrapper { … } // DelayIfStillRunning serializes jobs, delaying subsequent runs until the // previous one is complete. Jobs running after a delay of more than a minute // have the delay logged at Info. func DelayIfStillRunning(logger Logger) JobWrapper { … } // SkipIfStillRunning skips an invocation of the Job if a previous invocation is // still running. It logs skips to the given logger at Info level. func SkipIfStillRunning(logger Logger) JobWrapper { … }