code: func (cc *Client) createReqContext(txnOpts *requestOptions) (reqContext.Context, reqContext.CancelFunc) {
  
  	if txnOpts.Timeouts == nil {
  		txnOpts.Timeouts = make(map[fab.TimeoutType]time.Duration)
  	}
  
  	//setting default timeouts when not provided
  	if txnOpts.Timeouts[fab.Execute] == 0 {
  		txnOpts.Timeouts[fab.Execute] = cc.context.EndpointConfig().Timeout(fab.Execute)
  	}
  
  	reqCtx, cancel := contextImpl.NewRequest(cc.context, contextImpl.WithTimeout(txnOpts.Timeouts[fab.Execute]),
  		contextImpl.WithParent(txnOpts.ParentContext))
  	//Add timeout overrides here as a value so that it can be used by immediate child contexts (in handlers/transactors)
  	reqCtx = reqContext.WithValue(reqCtx, contextImpl.ReqContextTimeoutOverrides, txnOpts.Timeouts)
  
  	return reqCtx, cancel
  }
docs: //createReqContext creates req context for invoke handler