code: func (cn *connection) updatePiecePriority(piece pieceIndex) bool {
  	tpp := cn.t.piecePriority(piece)
  	if !cn.PeerHasPiece(piece) {
  		tpp = PiecePriorityNone
  	}
  	if tpp == PiecePriorityNone {
  		return cn.stopRequestingPiece(piece)
  	}
  	prio := cn.getPieceInclination()[piece]
  	switch cn.t.requestStrategy {
  	case 1:
  		switch tpp {
  		case PiecePriorityNormal:
  		case PiecePriorityReadahead:
  			prio -= int(cn.t.numPieces())
  		case PiecePriorityNext, PiecePriorityNow:
  			prio -= 2 * int(cn.t.numPieces())
  		default:
  			panic(tpp)
  		}
  		prio += int(piece / 3)
  	default:
  	}
  	return cn.pieceRequestOrder.Set(bitmap.BitIndex(piece), prio) || cn.shouldRequestWithoutBias()
  }
docs: // This is distinct from Torrent piece priority, which is the user's
  // preference. Connection piece priority is specific to a connection and is
  // used to pseudorandomly avoid connections always requesting the same pieces
  // and thus wasting effort.