code: func DoC(ctx context.Context, name string, run runFuncC, fallback fallbackFuncC) error {
  	done := make(chan struct{}, 1)
  
  	r := func(ctx context.Context) error {
  		err := run(ctx)
  		if err != nil {
  			return err
  		}
  
  		done <- struct{}{}
  		return nil
  	}
  
  	f := func(ctx context.Context, e error) error {
  		err := fallback(ctx, e)
  		if err != nil {
  			return err
  		}
  
  		done <- struct{}{}
  		return nil
  	}
  
  	var errChan chan error
  	if fallback == nil {
  		errChan = GoC(ctx, name, r, nil)
  	} else {
  		errChan = GoC(ctx, name, r, f)
  	}
  
  	select {
  	case <-done:
  		return nil
  	case err := <-errChan:
  		return err
  	}
  }
docs: // DoC runs your function in a synchronous manner, blocking until either your function succeeds
  // or an error is returned, including hystrix circuit errors