Known transaction 에러

/Users/usr/folder/node_modules/caver-js/packages/caver-core-helpers/src/errors.js:87
return new Error(Returned error: ${message})
^

Error: Returned error: known transaction: 9be97c7f… transaction code… fb870459d5ff3a
at Object.ErrorResponse (/Users/usr/folder/node_modules/caver-js/packages/caver-core-helpers/src/errors.js:87:16)
at /Users/usr/folder/node_modules/caver-js/packages/caver-core-requestmanager/src/index.js:155:44
at XMLHttpRequest.request.onreadystatechange (/Users/usr/folder/node_modules/caver-js/packages/caver-core-requestmanager/caver-providers-http/src/index.js:119:13)
at XMLHttpRequestEventTarget.dispatchEvent (/Users/usr/folder/node_modules/xhr2-cookies/dist/xml-http-request-event-target.js:34:22)
at XMLHttpRequest._setReadyState (/Users/usr/folder/node_modules/xhr2-cookies/dist/xml-http-request.js:208:14)
at XMLHttpRequest._onHttpResponseEnd (/Users/usr/folder/node_modules/xhr2-cookies/dist/xml-http-request.js:318:14)
at IncomingMessage. (/Users/usr/folder/node_modules/xhr2-cookies/dist/xml-http-request.js:289:61)
at IncomingMessage.emit (node:events:402:35)
at IncomingMessage.emit (node:domain:475:12)
at endReadableNT (node:internal/streams/readable:1340:12)

이러한 오류가 떴는데, 어떤 상황에서 뜨는 오류인지를 모르겠어요.

상황은 kip17 토큰 발행 후 어떠한 값을 저장한 tokenURI라는 객체를 바탕으로 mintWithTokenURI를 한 뒤 result를 받아내는 함수를 만든 뒤
배열에 있는 여러 값으로 tokenURI를 만들어 for loop 안에서 위 함수를 실행한 상황입니다.

같은 값을 넣고 해당 함수를 반복적으로 시행하였을 때는 정상적으로 작동하였는데
for loop 안에서 값을 다르게 넣도록 하였는데 오류가 나서 원인이 무엇인지 잘 감이 오지 않습니다.

@dfassf 안녕하세요,

해당에러는 이미 전송된 Transaction과 똑같은 Transaction이 txpool에 추가 될 때 발생하는 에러입니다.
작성하신 글로는 발생할 수 있을 지 확인이 어려우니, 코드를 참조해주시면 도움이 될 것 같습니다.

감사합니다.

async function getNFT(firstObj, secondObj){
        const privateKey = "0xb ... privateKey ... 81f" 
        const accountAddress = "0x54e ... accountAddress ... DE4"
        const keyring = caver.wallet.keyring.createFromPrivateKey(
            privateKey
        )

        if (!caver.wallet.getKeyring(keyring.address)) {
            const singleKeyRing = caver.wallet.keyring.createFromPrivateKey(
                privateKey
            )

        }

        const kip17 = await caver.kct.kip17.deploy(
            {name: firstObj,
            symbol: 'EPI'},
            keyring.address
        )

        const kip_17 = new caver.kct.kip17(kip17.options.address)
        randomTokenID = Math.floor(Math.random() * Number.MAX_SAFE_INTEGER)
        try {
            owner = await kip_17.ownerOf(randomTokenID)
        } catch (e) {
            tokenURI = JSON.stringify({secondObj})
            mintResult = await kip_17.mintWithTokenURI(
                accountAddress,
                randomTokenID,
                tokenURI,
                {from: keyring.address}
            )
            return mintResult.events.Transfer.address
        }
    }

해당 함수의 모양은 이러하고 이 함수를 쓴 전체 부분의 예시를 들면

const name = '123'
const arr = [1,2,3,4,5]
arr.forEach(element => {
    getNFT(name, element
})

이런 모양새입니다.
해당 함수 안에서 caver.kct.kip17.deploy에 대한 부분도 값을 다 다르게 주어야 하는건지요?