in src/internal/Router.ts [363:396]
    async _determineNodeId(cacheAffinityMap: CacheAffinityMap, key: object, keyType: PRIMITIVE_TYPE | CompositeType): Promise<number[] | null> {
        const partitionMap: Map<number, number[]> = cacheAffinityMap.partitionMapping;
        if (partitionMap.size == 0) {
            return null;
        }
        const keyAffinityMap = cacheAffinityMap.keyConfig;
        const affinityKeyInfo = await this._affinityKeyInfo(key, keyType);
        let affinityKey = affinityKeyInfo.key;
        let affinityKeyTypeCode = affinityKeyInfo.typeCode;
        if ('typeId' in affinityKeyInfo && keyAffinityMap.has(affinityKeyInfo.typeId)) {
            const affinityKeyTypeId = keyAffinityMap.get(affinityKeyInfo.typeId);
            if (affinityKey instanceof BinaryObject &&
                ((<BinaryObject>affinityKey).fields.has(affinityKeyTypeId))) {
                const field = affinityKey.fields.get(affinityKeyTypeId);
                affinityKey = await field.getValue();
                affinityKeyTypeCode = field.typeCode;
            }
        }
        const keyHash = await BinaryUtils.hashCode(affinityKey, this._communicator, affinityKeyTypeCode);
        const partition = RendezvousAffinityFunction.calcPartition(keyHash, partitionMap.size);
        Logger.logDebug('Partition = ' + partition);
        const nodeId: number[] = partitionMap.get(partition);
        Logger.logDebug('Node ID = ' + nodeId);
        return nodeId;
    }