code: func callRollbackHook(ctx *workflowContext, wg *sync.WaitGroup) error {
  	if ctx.userdata.workflowHooks == nil {
  		return nil
  	}
  	rollbackHooks := ctx.userdata.workflowHooks.Rollbacks
  	if ctx.userdata.workflowHooks.Rollback != nil {
  		ctx.logger.Warn("DEPRECATED: Single RollbackHook superseded by RollbackHookHandler slice")
  		rollbackHooks = append(rollbackHooks,
  			RollbackHookFunc(ctx.userdata.workflowHooks.Rollback))
  	}
  	for _, eachRollbackHook := range rollbackHooks {
  		wg.Add(1)
  		go func(handler RollbackHookHandler, context map[string]interface{},
  			serviceName string,
  			awsSession *session.Session,
  			noop bool,
  			logger *logrus.Logger) {
  			// Decrement the counter when the goroutine completes.
  			defer wg.Done()
  			rollbackErr := handler.Rollback(context,
  				serviceName,
  				awsSession,
  				noop,
  				logger)
  			logger.WithFields(logrus.Fields{
  				"Error": rollbackErr,
  			}).Warn("Rollback function failed to complete")
  		}(eachRollbackHook,
  			ctx.context.workflowHooksContext,
  			ctx.userdata.serviceName,
  			ctx.context.awsSession,
  			ctx.userdata.noop,
  			ctx.logger)
  	}
  	return nil
  }
docs: // Encapsulate calling the rollback hooks