package daemon import ( "context" "time" ) func until(ctx context.Context, fn func(context.Context) error) error { for { if err := fn(ctx); err == nil { return nil } else if ctxErr := ctx.Err(); ctxErr != nil { return ctxErr } time.Sleep(1 * time.Second) } }