code: func (w *Worker) ClientPreUncooperativeCloseRequest(job *data.Job) error {
  	logger := w.logger.Add("method", "ClientPreUncooperativeCloseRequest",
  		"job", job)
  
  	ch, err := w.relatedChannel(logger, job,
  		data.JobClientPreUncooperativeCloseRequest)
  	if err != nil {
  		return err
  	}
  
  	jdata, err := w.publishData(logger, job)
  	if err != nil {
  		return err
  	}
  
  	offer, err := w.offering(logger, ch.Offering)
  	if err != nil {
  		return err
  	}
  
  	acc, err := w.account(logger, ch.Client)
  	if err != nil {
  		return err
  	}
  
  	if err := w.clientValidateChannelForClose(ch); err != nil {
  		return err
  	}
  
  	return w.doClientPreUncooperativeCloseRequestAndSaveTx(logger, job, ch,
  		acc, offer, jdata.GasPrice)
  }
docs: // ClientPreUncooperativeCloseRequest requests the closing of the channel
  // and starts the challenge period.