code: func (p *peerEndorser) ProcessTransactionProposal(ctx reqContext.Context, request fab.ProcessProposalRequest) (*fab.TransactionProposalResponse, error) {
  	logger.Debugf("Processing proposal using endorser: %s", p.target)
  
  	proposalResponse, err := p.sendProposal(ctx, request)
  	if err != nil {
  		tpr := fab.TransactionProposalResponse{Endorser: p.target}
  		return &tpr, errors.Wrapf(err, "Transaction processing for endorser [%s]", p.target)
  	}
  
  	chaincodeStatus, err := getChaincodeResponseStatus(proposalResponse)
  	if err != nil {
  		return nil, errors.WithMessage(err, "chaincode response status parsing failed")
  	}
  
  	tpr := fab.TransactionProposalResponse{
  		ProposalResponse: proposalResponse,
  		Endorser:         p.target,
  		ChaincodeStatus:  chaincodeStatus,
  		Status:           proposalResponse.GetResponse().Status,
  	}
  	return &tpr, nil
  }
docs: // ProcessTransactionProposal sends the transaction proposal to a peer and returns the response.