func()

in workflow.go [454:474]


func (w *Workflow) makeDoForStep(step Steper, state *State) func(ctx context.Context) error {
	return func(ctx context.Context) error {
		do := func(fn func() error) error { return fn() }
		if w.DontPanic {
			do = catchPanicAsError
		}
		// call Before callbacks
		err := do(func() error {
			ctxBefore, errBefore := state.Before(ctx, step)
			ctx = ctxBefore // use the context returned by Before
			return errBefore
		})
		if err != nil {
			err = ErrBeforeStep{err}
		} else { // only call step.Do if all Before callbacks succeed
			err = do(func() error { return step.Do(ctx) })
		}
		// call After callbacks
		return do(func() error { return state.After(ctx, step, err) })
	}
}