func (s *Step) Run(p interface{}) {
	s.callDo(p)
	switch {
	case s.Success != nil:
		s.Success.Run(p)
	case p == nil:
		return
	default:
		if code, ok := p.(ExitCode); ok {
			if s.Exiter != nil {
				s.Exiter(int(code))
			}
			return
		}
		panic(p)
	}
}
/*
Run call the code block of the step, moves to the success step if the call went ok, opr the the error step otherwise
package flow
type ExitCode int
type Step struct {
	Do      func()
	Success *Step
	Error   *Step
	Desc    string
	Exiter  func(code int)
}