From 348220e877233b5cf1559b20887184a70eade75b Mon Sep 17 00:00:00 2001
From: ara-klaytn <palani.aravindh@klaytn.foundation>
Date: Thu, 11 Jan 2024 17:48:55 +0800
Subject: [PATCH] Added try catch for sendTx() and main()

---
 aptos-tx-latency-measurement/sendtx_aptos.js  | 33 ++++++++++-----
 .../sendtx_arbitrium.js                       | 40 +++++++++++++------
 .../sendtx_avalanche.js                       | 34 +++++++++++-----
 bnb-tx-latency-measurement/sendtx_bnb.js      | 29 ++++++++++----
 .../sendtx_elrond.js                          | 29 ++++++++++----
 eos-tx-latency-measurement/sendtx_eos.js      | 31 +++++++++-----
 .../sendtx_fantom.js                          | 29 ++++++++++----
 .../sendtx_harmony.js                         | 31 +++++++++-----
 .../sendtx_hedera.js                          | 29 ++++++++++----
 .../sendtx_klaytn.js                          | 32 ++++++++++-----
 near-tx-latency-measurement/sendtx_near.js    | 33 ++++++++++-----
 .../sendtx_optimism.js                        | 39 ++++++++++++------
 .../sendtx_polkadot.js                        | 27 +++++++++----
 .../sendtx_polygon.js                         | 32 ++++++++++-----
 .../sendtx_solana.js                          | 32 ++++++++++-----
 sui-tx-latency-measurement/sendtx_sui.js      | 31 +++++++++-----
 16 files changed, 362 insertions(+), 149 deletions(-)

diff --git a/aptos-tx-latency-measurement/sendtx_aptos.js b/aptos-tx-latency-measurement/sendtx_aptos.js
index 4cbda30..ab7fcaf 100644
--- a/aptos-tx-latency-measurement/sendtx_aptos.js
+++ b/aptos-tx-latency-measurement/sendtx_aptos.js
@@ -116,7 +116,7 @@ function loadConfig() {
 }
 
 async function sendSlackMsg(msg) {
-  axios.post(
+  await axios.post(
     process.env.SLACK_API_URL,
     {
       channel: process.env.SLACK_CHANNEL,
@@ -182,7 +182,7 @@ async function sendTx() {
 
     if (balance < parseFloat(process.env.BALANCE_ALERT_CONDITION_IN_APTOS)) {
       const now = new Date();
-      sendSlackMsg(
+      await sendSlackMsg(
         `${now}, Current balance of <${process.env.SCOPE_URL}/address/${address}|${address}> is less than ${process.env.BALANCE_ALERT_CONDITION_IN_APTOS} APTOS! balance=${balance} APTOS`
       );
     }
@@ -229,7 +229,7 @@ async function sendTx() {
   } catch (err) {
 
      const now = new Date();
-    sendSlackMsg(`${now}, failed to execute aptos, ${err.toString()}`);
+    await sendSlackMsg(`${now}, failed to execute aptos, ${err.toString()}`);
     console.log("failed to execute.", err.toString());
     data.error = err.toString();
     console.log(`${data.executedAt},${data.chainId},${data.txhash},${data.startTime},${data.endTime},${data.latency},${data.txFee},${data.txFeeInUSD},${data.resourceUsedOfLatestBlock},${data.numOfTxInLatestBlock},${data.pingTime},${data.error}`)
@@ -238,7 +238,7 @@ async function sendTx() {
     await uploadChoice(data);
   } catch (err) {
     const now = new Date();
-    sendSlackMsg(`${now}, failed to upload aptos, ${err.toString()}`);
+    await sendSlackMsg(`${now}, failed to upload aptos, ${err.toString()}`);
     console.log(
       `failed to ${process.env.UPLOAD_METHOD === "AWS" ? "s3" : "gcs"}.upload!! Printing instead!`,
       err.toString()
@@ -262,11 +262,24 @@ async function main() {
 
   // run sendTx every SEND_TX_INTERVAL
   const interval = eval(process.env.SEND_TX_INTERVAL);
-  setInterval(() => {
-    console.log(`sending tx...`);
-    sendTx();
-  }, interval);
-  sendTx();
+
+  setInterval(async()=>{
+    try{
+        await sendTx()
+    } catch(err){
+        console.log("failed to execute sendTx", err.toString())
+    }
+}, interval)
+try{
+    await sendTx()
+} catch(err){
+    console.log("failed to execute sendTx", err.toString())
+}
 }
 loadConfig();
-main();
+try{
+    main()
+}
+catch(err){
+    console.log("failed to execute main", err.toString())
+}
diff --git a/arbitrium-tx-latency-measurement/sendtx_arbitrium.js b/arbitrium-tx-latency-measurement/sendtx_arbitrium.js
index d845a9e..a24858d 100644
--- a/arbitrium-tx-latency-measurement/sendtx_arbitrium.js
+++ b/arbitrium-tx-latency-measurement/sendtx_arbitrium.js
@@ -53,7 +53,7 @@ async function makeParquetFile(data) {
 }
 
 async function sendSlackMsg(msg) {
-  axios.post(
+  await axios.post(
     process.env.SLACK_API_URL,
     {
       channel: process.env.SLACK_CHANNEL,
@@ -182,7 +182,7 @@ async function sendTx() {
 
     if (balance < parseFloat(process.env.BALANCE_ALERT_CONDITION_IN_ARB)) {
       const now = new Date();
-      sendSlackMsg(
+      await sendSlackMsg(
         `${now}, Current balance of <${process.env.SCOPE_URL}/address/${signer.address}|${signer.address}> is less than ${process.env.BALANCE_ALERT_CONDITION_IN_ARB} ARB! balance=${balance} ARB`
       );
     }
@@ -262,7 +262,7 @@ async function sendTx() {
     // console.log(`${data.executedAt},${data.chainId},${data.txhash},${data.startTime},${data.endTime},${data.latency},${data.txFee},${data.txFeeInUSD},${data.resourceUsedOfLatestBlock},${data.numOfTxInLatestBlock},${data.pingTime},${data.error}`)
   } catch (err) {
     const now = new Date();
-    sendSlackMsg(`${now}, failed to execute arbitrum, ${err.toString()}`);
+    await sendSlackMsg(`${now}, failed to execute arbitrum, ${err.toString()}`);
     console.log("failed to execute.", err.toString());
     data.error = err.toString();
     // console.log(`${data.executedAt},${data.chainId},${data.txhash},${data.startTime},${data.endTime},${data.latency},${data.txFee},${data.txFeeInUSD},${data.resourceUsedOfLatestBlock},${data.numOfTxInLatestBlock},${data.pingTime},${data.error}`)
@@ -271,7 +271,7 @@ async function sendTx() {
     await uploadChoice(data);
   } catch (err) {
     const now = new Date();
-    sendSlackMsg(`${now}, failed to upload arbitrium, ${err.toString()}`);
+    await sendSlackMsg(`${now}, failed to upload arbitrium, ${err.toString()}`);
 
     console.log(
       `failed to ${process.env.UPLOAD_METHOD === "AWS" ? "s3" : "gcs"}.upload!! Printing instead!`,
@@ -319,10 +319,10 @@ async function l1commitmentprocess(db, hash, createdAt) {
     if (postIndex !== -1) {
       console.log("L1 tx hash not found");
       db.data.posts[postIndex].status = "failed";
-      sendSlackMsg(`L1 tx hash not found for ${hash} in Arbitrium!`);
+      await sendSlackMsg(`L1 tx hash not found for ${hash} in Arbitrium!`);
       return null;
     } else {
-      sendSlackMsg(`l2 ${hash} not found in Arbitrium!`);
+      await sendSlackMsg(`l2 ${hash} not found in Arbitrium!`);
       return Error("l2TxHash not found.");
     }
   }
@@ -338,7 +338,7 @@ async function l1commitmentprocess(db, hash, createdAt) {
     gcpData.hash = hash;
     uploadToGCSL1(gcpData)
   } else {
-    sendL1FailedSlackMsg(`l2 ${hash} not found! in Arbitrium!`);
+    await sendSlackMsg(`l2 ${hash} not found! in Arbitrium!`);
     return Error("l2TxHash not found.");
   }
 }
@@ -359,11 +359,25 @@ async function main() {
 
   // run sendTx every SEND_TX_INTERVAL
   const interval = eval(process.env.SEND_TX_INTERVAL);
-  setInterval(() => {
-    sendTx();
-    l1Checker();
-  }, interval);
-  sendTx();
+  setInterval(async()=>{
+    try{
+        await sendTx()
+        await l1Checker();
+    } catch(err){
+        console.log("failed to execute sendTx", err.toString())
+    }
+}, interval)
+try{
+    await sendTx()
+} catch(err){
+    console.log("failed to execute sendTx", err.toString())
+}
 }
 
-main();
+
+try{
+    main()
+}
+catch(err){
+    console.log("failed to execute main", err.toString())
+}
diff --git a/avalanche-tx-latency-measurement/sendtx_avalanche.js b/avalanche-tx-latency-measurement/sendtx_avalanche.js
index e79571e..3a336a5 100644
--- a/avalanche-tx-latency-measurement/sendtx_avalanche.js
+++ b/avalanche-tx-latency-measurement/sendtx_avalanche.js
@@ -57,7 +57,7 @@ async function makeParquetFile(data) {
 }
 
 async function sendSlackMsg(msg) {
-  axios.post(process.env.SLACK_API_URL, {
+  await axios.post(process.env.SLACK_API_URL, {
       'channel':process.env.SLACK_CHANNEL,
       'mrkdown':true,
       'text':msg
@@ -164,7 +164,7 @@ const sendAvax = async (amount, to, maxFeePerGas = undefined, maxPriorityFeePerG
         if(balance < parseFloat(process.env.BALANCE_ALERT_CONDITION_IN_AVAX))
         {
             const now = new Date();
-            sendSlackMsg(`${now}, Current balance of <${process.env.SCOPE_URL}/address/${address}|${address}> is less than ${process.env.BALANCE_ALERT_CONDITION_IN_AVAX} AVAX! balance=${balance} AVAX`)
+            await sendSlackMsg(`${now}, Current balance of <${process.env.SCOPE_URL}/address/${address}|${address}> is less than ${process.env.BALANCE_ALERT_CONDITION_IN_AVAX} AVAX! balance=${balance} AVAX`)
         }
 
         const latestNonce = await HTTPSProvider.getTransactionCount(address);
@@ -233,7 +233,7 @@ const sendAvax = async (amount, to, maxFeePerGas = undefined, maxPriorityFeePerG
         // console.log(`${data.executedAt},${data.chainId},${data.txhash},${data.startTime},${data.endTime},${data.latency},${data.txFee},${data.txFeeInUSD},${data.resourceUsedOfLatestBlock},${data.numOfTxInLatestBlock},${data.pingTime},${data.error}`)
     } catch(err){
          const now = new Date();
-    sendSlackMsg(`${now}, failed to execute avalanche, ${err.toString()}`);
+    await sendSlackMsg(`${now}, failed to execute avalanche, ${err.toString()}`);
         console.log("failed to execute.", err.toString())
         data.error = err.toString()
         // console.log(`${data.executedAt},${data.chainId},${data.txhash},${data.startTime},${data.endTime},${data.latency},${data.txFee},${data.txFeeInUSD},${data.resourceUsedOfLatestBlock},${data.numOfTxInLatestBlock},${data.pingTime},${data.error}`)
@@ -241,7 +241,7 @@ const sendAvax = async (amount, to, maxFeePerGas = undefined, maxPriorityFeePerG
     try{
         await uploadChoice(data)
     } catch(err){
-        sendSlackMsg(`failed to upload avalanche, ${err.toString()}`);
+        await sendSlackMsg(`failed to upload avalanche, ${err.toString()}`);
         console.log(`failed to ${process.env.UPLOAD_METHOD === 'AWS'? 's3': 'gcs'}.upload!! Printing instead!`, err.toString())
         console.log(JSON.stringify(data))
     }
@@ -264,11 +264,27 @@ async function main(){
     address = wallet.address;
 
     // run sendTx every SEND_TX_INTERVAL(sec).
+    
+
+
     const interval = eval(process.env.SEND_TX_INTERVAL)
-        setInterval(()=>{
-        sendAvax("0.0", address);
+
+    setInterval(async()=>{
+        try{
+            await sendAvax("0.0", address);
+        } catch(err){
+            console.log("failed to execute sendTx", err.toString())
+        }
     }, interval)
-    sendAvax("0.0", address);
+    try{
+        await sendAvax("0.0", address);
+    } catch(err){
+        console.log("failed to execute sendTx", err.toString())
+    }
 }
-
-main();
\ No newline at end of file
+try{
+    main()
+}
+catch(err){
+    console.log("failed to execute main", err.toString())
+}
\ No newline at end of file
diff --git a/bnb-tx-latency-measurement/sendtx_bnb.js b/bnb-tx-latency-measurement/sendtx_bnb.js
index 450726f..c3ee50a 100644
--- a/bnb-tx-latency-measurement/sendtx_bnb.js
+++ b/bnb-tx-latency-measurement/sendtx_bnb.js
@@ -49,7 +49,7 @@ async function makeParquetFile(data) {
 }
 
 async function sendSlackMsg(msg) {
-    axios.post(process.env.SLACK_API_URL, {
+    await axios.post(process.env.SLACK_API_URL, {
         'channel':process.env.SLACK_CHANNEL,
         'mrkdown':true,
         'text':msg
@@ -142,7 +142,7 @@ async function sendTx(){
         if(balance < parseFloat(process.env.BALANCE_ALERT_CONDITION_IN_BNB))
         {
             const now = new Date();
-            sendSlackMsg(`${now}, Current balance of <${process.env.SCOPE_URL}/address/${signer.address}|${signer.address}> is less than ${process.env.BALANCE_ALERT_CONDITION_IN_BNB} BNB! balance=${balance} BNB`)
+            await sendSlackMsg(`${now}, Current balance of <${process.env.SCOPE_URL}/address/${signer.address}|${signer.address}> is less than ${process.env.BALANCE_ALERT_CONDITION_IN_BNB} BNB! balance=${balance} BNB`)
         }
 
         await web3.eth.net.getId().then((id)=>{
@@ -216,7 +216,7 @@ async function sendTx(){
 
     } catch(err){
          const now = new Date();
-    sendSlackMsg(`${now}, failed to execute bnb, ${err.toString()}`);
+    await sendSlackMsg(`${now}, failed to execute bnb, ${err.toString()}`);
         console.log("failed to execute.", err.toString())
         data.error = err.toString()
         // console.log(`${data.executedAt},${data.chainId},${data.txhash},${data.startTime},${data.endTime},${data.latency},${data.txFee},${data.txFeeInUSD},${data.resourceUsedOfLatestBlock},${data.numOfTxInLatestBlock},${data.pingTime},${data.error}`)
@@ -224,7 +224,7 @@ async function sendTx(){
     try{
         await uploadChoice(data)
     } catch(err){
-        sendSlackMsg(`failed to upload bnb, ${err.toString()}`);
+        await sendSlackMsg(`failed to upload bnb, ${err.toString()}`);
         console.log(`failed to ${process.env.UPLOAD_METHOD === 'AWS'? 's3': 'gcs'}.upload!! Printing instead!`, err.toString())
         console.log(JSON.stringify(data))
     }
@@ -244,10 +244,23 @@ async function main(){
 
     // run sendTx every SEND_TX_INTERVAL
     const interval = eval(process.env.SEND_TX_INTERVAL)
-    setInterval(()=>{
-      sendTx()
+    setInterval(async()=>{
+        try{
+            await sendTx()
+        } catch(err){
+            console.log("failed to execute sendTx", err.toString())
+        }
     }, interval)
-    sendTx()
+    try{
+        await sendTx()
+    } catch(err){
+        console.log("failed to execute sendTx", err.toString())
+    }
 }
 
-main();
\ No newline at end of file
+try{
+    main()
+}
+catch(err){
+    console.log("failed to execute main", err.toString())
+}
\ No newline at end of file
diff --git a/elrond-tx-latency-measurement/sendtx_elrond.js b/elrond-tx-latency-measurement/sendtx_elrond.js
index 8fd0fd8..3cc452c 100644
--- a/elrond-tx-latency-measurement/sendtx_elrond.js
+++ b/elrond-tx-latency-measurement/sendtx_elrond.js
@@ -53,7 +53,7 @@ async function makeParquetFile(data) {
 }
   
 async function sendSlackMsg(msg) {
-    axios.post(process.env.SLACK_API_URL, {
+    await axios.post(process.env.SLACK_API_URL, {
         'channel':process.env.SLACK_CHANNEL,
         'mrkdown':true,
         'text':msg
@@ -146,7 +146,7 @@ async function sendTx(){
         if(balance < parseFloat(process.env.BALANCE_ALERT_CONDITION_IN_EGLD))
         {
             const now = new Date();
-            sendSlackMsg(`${now}, Current balance of <${process.env.SCOPE_URL}/accounts/${address.toString()}|${address.toString()}> is less than ${process.env.BALANCE_ALERT_CONDITION_IN_EGLD} EGLD! balance=${balance} EGLD`)
+            await sendSlackMsg(`${now}, Current balance of <${process.env.SCOPE_URL}/accounts/${address.toString()}|${address.toString()}> is less than ${process.env.BALANCE_ALERT_CONDITION_IN_EGLD} EGLD! balance=${balance} EGLD`)
         }
 
         const networkConfig = await networkProvider.getNetworkConfig();
@@ -234,7 +234,7 @@ async function sendTx(){
 
     } catch(err){
          const now = new Date();
-    sendSlackMsg(`${now}, failed to execute elrond, ${err.toString()}`);
+    await sendSlackMsg(`${now}, failed to execute elrond, ${err.toString()}`);
         console.log("failed to execute.", err.toString())
         data.error = err.toString()
         // console.log(`${data.executedAt},${data.chainId},${data.txhash},${data.startTime},${data.endTime},${data.latency},${data.txFee},${data.txFeeInUSD},${data.resourceUsedOfLatestBlock},${data.numOfTxInLatestBlock},${data.pingTime},${data.error}`)
@@ -242,7 +242,7 @@ async function sendTx(){
     try{
         await uploadToS3(data)
     } catch(err){
-        sendSlackMsg(`failed to upload elrond, ${err.toString()}`);
+        await sendSlackMsg(`failed to upload elrond, ${err.toString()}`);
         console.log('failed to s3.upload! Printing instead!', err.toString())
         console.log(JSON.stringify(data))
     }
@@ -270,10 +270,23 @@ async function main(){
 
     // run sendTx every SEND_TX_INTERVAL
     const interval = eval(process.env.SEND_TX_INTERVAL)
-    setInterval(()=>{
-      sendTx()
+    setInterval(async()=>{
+        try{
+            await sendTx()
+        } catch(err){
+            console.log("failed to execute sendTx", err.toString())
+        }
     }, interval)
-    sendTx()
+    try{
+        await sendTx()
+    } catch(err){
+        console.log("failed to execute sendTx", err.toString())
+    }
 }
 
-main();
\ No newline at end of file
+try{
+    main()
+}
+catch(err){
+    console.log("failed to execute main", err.toString())
+}
\ No newline at end of file
diff --git a/eos-tx-latency-measurement/sendtx_eos.js b/eos-tx-latency-measurement/sendtx_eos.js
index c4a4c45..2a81d13 100644
--- a/eos-tx-latency-measurement/sendtx_eos.js
+++ b/eos-tx-latency-measurement/sendtx_eos.js
@@ -56,7 +56,7 @@ async function makeParquetFile(data) {
 }  
 
 async function sendSlackMsg(msg) {
-  axios.post(process.env.SLACK_API_URL, {
+  await axios.post(process.env.SLACK_API_URL, {
       'channel':process.env.SLACK_CHANNEL,
       'mrkdown':true,
       'text':msg
@@ -164,7 +164,7 @@ async function sendTx(){
     {
       const now = new Date();
       //testnet : https://testnet.eos.io/blockchain-accounts/{accountId}
-      sendSlackMsg(`${now}, Current balance of <${process.env.SCOPE_URL}/blockchain-accounts/${accountId}|${accountId}> is less than ${process.env.BALANCE_ALERT_CONDITION_IN_EOS} EOS! balance=${balance} EOS`)
+      await sendSlackMsg(`${now}, Current balance of <${process.env.SCOPE_URL}/blockchain-accounts/${accountId}|${accountId}> is less than ${process.env.BALANCE_ALERT_CONDITION_IN_EOS} EOS! balance=${balance} EOS`)
     }
     
     //not broadcast, sign transaction. 
@@ -210,7 +210,7 @@ async function sendTx(){
     console.log(`${data.executedAt},${data.chainId},${data.txhash},${data.startTime},${data.endTime},${data.latency},${data.txFee},${data.txFeeInUSD},${data.resourceUsedOfLatestBlock},${data.numOfTxInLatestBlock},${data.pingTime},${data.error}`)
   } catch(err){
        const now = new Date();
-    sendSlackMsg(`${now}, failed to execute eos, ${err.toString()}`);
+    await sendSlackMsg(`${now}, failed to execute eos, ${err.toString()}`);
       console.log("failed to execute.", err.toString())
       data.error = err.toString()
       console.log(`${data.executedAt},${data.chainId},${data.txhash},${data.startTime},${data.endTime},${data.latency},${data.txFee},${data.txFeeInUSD},${data.resourceUsedOfLatestBlock},${data.numOfTxInLatestBlock},${data.pingTime},${data.error}`)
@@ -218,7 +218,7 @@ async function sendTx(){
   try{
       await uploadChoice(data)
   } catch(err){
-    sendSlackMsg(`failed to upload eos, ${err.toString()}`);
+    await sendSlackMsg(`failed to upload eos, ${err.toString()}`);
       console.log(`failed to ${process.env.UPLOAD_METHOD === 'AWS'? 's3': 'gcs'}.upload!! Printing instead!`, err.toString())
       console.log(JSON.stringify(data))
   }
@@ -230,10 +230,23 @@ async function main(){
 
   // run sendTx every SEND_TX_INTERVAL
   const interval = eval(process.env.SEND_TX_INTERVAL)
-  setInterval(()=>{
-    sendTx()
-  }, interval)
-  sendTx()
+  setInterval(async()=>{
+    try{
+        await sendTx()
+    } catch(err){
+        console.log("failed to execute sendTx", err.toString())
+    }
+}, interval)
+try{
+    await sendTx()
+} catch(err){
+    console.log("failed to execute sendTx", err.toString())
+}
 }
 
-main();
\ No newline at end of file
+try{
+    main()
+}
+catch(err){
+    console.log("failed to execute main", err.toString())
+}
\ No newline at end of file
diff --git a/fantom-tx-latency-measurement/sendtx_fantom.js b/fantom-tx-latency-measurement/sendtx_fantom.js
index 3ef0331..e924697 100644
--- a/fantom-tx-latency-measurement/sendtx_fantom.js
+++ b/fantom-tx-latency-measurement/sendtx_fantom.js
@@ -50,7 +50,7 @@ async function makeParquetFile(data) {
 }
 
 async function sendSlackMsg(msg) {
-    axios.post(process.env.SLACK_API_URL, {
+    await axios.post(process.env.SLACK_API_URL, {
         'channel':process.env.SLACK_CHANNEL,
         'mrkdown':true,
         'text':msg
@@ -143,7 +143,7 @@ async function sendTx(){
         if(balance < parseFloat(process.env.BALANCE_ALERT_CONDITION_IN_FTM))
         {
             const now = new Date();
-            sendSlackMsg(`${now}, Current balance of <${process.env.SCOPE_URL}/address/${signer.address}|${signer.address}> is less than ${process.env.BALANCE_ALERT_CONDITION_IN_FTM} FTM! balance=${balance} FTM`)
+            await sendSlackMsg(`${now}, Current balance of <${process.env.SCOPE_URL}/address/${signer.address}|${signer.address}> is less than ${process.env.BALANCE_ALERT_CONDITION_IN_FTM} FTM! balance=${balance} FTM`)
         }
 
         await web3.eth.net.getId().then((id)=>{
@@ -222,7 +222,7 @@ async function sendTx(){
         // console.log(`${data.executedAt},${data.chainId},${data.txhash},${data.startTime},${data.endTime},${data.latency},${data.txFee},${data.txFeeInUSD},${data.resourceUsedOfLatestBlock},${data.numOfTxInLatestBlock},${data.pingTime},${data.error}`)
     } catch(err){
          const now = new Date();
-    sendSlackMsg(`${now}, failed to execute fantom, ${err.toString()}`);
+    await sendSlackMsg(`${now}, failed to execute fantom, ${err.toString()}`);
         console.log("failed to execute.", err.toString())
         data.error = err.toString()
         // console.log(`${data.executedAt},${data.chainId},${data.txhash},${data.startTime},${data.endTime},${data.latency},${data.txFee},${data.txFeeInUSD},${data.resourceUsedOfLatestBlock},${data.numOfTxInLatestBlock},${data.pingTime},${data.error}`)
@@ -230,7 +230,7 @@ async function sendTx(){
     try{
         await uploadChoice(data)
     } catch(err){
-        sendSlackMsg(`failed to upload fantom, ${err.toString()}`);
+        await sendSlackMsg(`failed to upload fantom, ${err.toString()}`);
         console.log(`failed to ${process.env.UPLOAD_METHOD === 'AWS'? 's3': 'gcs'}.upload!! Printing instead!`, err.toString())
         console.log(JSON.stringify(data))
     }
@@ -250,10 +250,23 @@ async function main(){
 
     // run sendTx every SEND_TX_INTERVAL
     const interval = eval(process.env.SEND_TX_INTERVAL)
-    setInterval(()=>{
-      sendTx()
+    setInterval(async()=>{
+        try{
+            await sendTx()
+        } catch(err){
+            console.log("failed to execute sendTx", err.toString())
+        }
     }, interval)
-    sendTx()
+    try{
+        await sendTx()
+    } catch(err){
+        console.log("failed to execute sendTx", err.toString())
+    }
 }
 
-main();
\ No newline at end of file
+try{
+    main()
+}
+catch(err){
+    console.log("failed to execute main", err.toString())
+}
\ No newline at end of file
diff --git a/harmony-tx-latency-measurement/sendtx_harmony.js b/harmony-tx-latency-measurement/sendtx_harmony.js
index dddcc92..c0fce39 100644
--- a/harmony-tx-latency-measurement/sendtx_harmony.js
+++ b/harmony-tx-latency-measurement/sendtx_harmony.js
@@ -50,7 +50,7 @@ async function makeParquetFile(data) {
 }
 
 async function sendSlackMsg(msg) {
-  axios.post(
+  await axios.post(
     process.env.SLACK_API_URL,
     {
       channel: process.env.SLACK_CHANNEL,
@@ -148,7 +148,7 @@ async function sendTx() {
 
     if (balance / 1e18 < parseFloat(process.env.BALANCE_ALERT_CONDITION_IN_ONE)) {
       const now = new Date();
-      sendSlackMsg(
+      await sendSlackMsg(
         `${now}, Current balance of <${
           process.env.SCOPE_URL
         }/address/${signerAddress}|${signerAddress}> is less than ${
@@ -222,7 +222,7 @@ async function sendTx() {
     // console.log(`${data.executedAt},${data.chainId},${data.txhash},${data.startTime},${data.endTime},${data.latency},${data.txFee},${data.txFeeInUSD},${data.resourceUsedOfLatestBlock},${data.numOfTxInLatestBlock},${data.pingTime},${data.error}`)
   } catch (err) {
      const now = new Date();
-    sendSlackMsg(`${now}, failed to execute harmony, ${err.toString()}`);
+    await sendSlackMsg(`${now}, failed to execute harmony, ${err.toString()}`);
     console.log("failed to execute.", err.toString());
     data.error = err.toString();
     // console.log(`${data.executedAt},${data.chainId},${data.txhash},${data.startTime},${data.endTime},${data.latency},${data.txFee},${data.txFeeInUSD},${data.resourceUsedOfLatestBlock},${data.numOfTxInLatestBlock},${data.pingTime},${data.error}`)
@@ -230,7 +230,7 @@ async function sendTx() {
   try {
     await uploadChoice(data);
   } catch (err) {
-    sendSlackMsg(`failed to upload harmony, ${err.toString()}`);
+    await sendSlackMsg(`failed to upload harmony, ${err.toString()}`);
     console.log(
       `failed to ${process.env.UPLOAD_METHOD === "AWS" ? "s3" : "gcs"}.upload!! Printing instead!`,
       err.toString()
@@ -253,10 +253,23 @@ async function main() {
 
   // run sendTx every SEND_TX_INTERVAL
   const interval = eval(process.env.SEND_TX_INTERVAL);
-  setInterval(() => {
-    sendTx();
-  }, interval);
-  sendTx()
+  setInterval(async()=>{
+    try{
+        await sendTx()
+    } catch(err){
+        console.log("failed to execute sendTx", err.toString())
+    }
+}, interval)
+try{
+    await sendTx()
+} catch(err){
+    console.log("failed to execute sendTx", err.toString())
+}
 }
 
-main();
+try{
+    main()
+}
+catch(err){
+    console.log("failed to execute main", err.toString())
+}
diff --git a/hedera-tx-latency-measurement/sendtx_hedera.js b/hedera-tx-latency-measurement/sendtx_hedera.js
index 7f63f18..c506899 100644
--- a/hedera-tx-latency-measurement/sendtx_hedera.js
+++ b/hedera-tx-latency-measurement/sendtx_hedera.js
@@ -48,7 +48,7 @@ async function makeParquetFile(data) {
 }
   
 async function sendSlackMsg(msg) {
-    axios.post(process.env.SLACK_API_URL, {
+    await axios.post(process.env.SLACK_API_URL, {
         'channel':process.env.SLACK_CHANNEL,
         'mrkdown':true,
         'text':msg
@@ -147,7 +147,7 @@ async function sendTx(){
         if(balance.hbars.toBigNumber().toNumber() < parseFloat(process.env.BALANCE_ALERT_CONDITION_IN_HBAR))
         {
             const now = new Date();
-            sendSlackMsg(`${now}, Current balance of <${process.env.SCOPE_URL}/account/${accountID}|${accountID}> is less than ${process.env.BALANCE_ALERT_CONDITION_IN_HBAR} HBAR! balance=${balance.hbars.toBigNumber().toNumber()} HBAR`)
+            await sendSlackMsg(`${now}, Current balance of <${process.env.SCOPE_URL}/account/${accountID}|${accountID}> is less than ${process.env.BALANCE_ALERT_CONDITION_IN_HBAR} HBAR! balance=${balance.hbars.toBigNumber().toNumber()} HBAR`)
         }
 
         // Create and sign transaction : https://github.com/hashgraph/hedera-sdk-js/blob/main/examples/sign-transaction.js
@@ -202,7 +202,7 @@ async function sendTx(){
         // console.log(`${data.executedAt},${data.chainId},${data.txhash},${data.startTime},${data.endTime},${data.latency},${data.txFee},${data.txFeeInUSD},${data.resourceUsedOfLatestBlock},${data.numOfTxInLatestBlock},${data.pingTime},${data.error}`)    
     } catch(err){
          const now = new Date();
-    sendSlackMsg(`${now}, failed to execute hedera, ${err.toString()}`);
+    await sendSlackMsg(`${now}, failed to execute hedera, ${err.toString()}`);
         console.log("failed to execute.", err.toString())
         data.error = err.toString()
         // console.log(`${data.executedAt},${data.chainId},${data.txhash},${data.startTime},${data.endTime},${data.latency},${data.txFee},${data.txFeeInUSD},${data.resourceUsedOfLatestBlock},${data.numOfTxInLatestBlock},${data.pingTime},${data.error}`)
@@ -210,7 +210,7 @@ async function sendTx(){
     try{
         await uploadChoice(data)
     } catch(err) {
-        sendSlackMsg(`failed to upload hedera, ${err.toString()}`);
+        await sendSlackMsg(`failed to upload hedera, ${err.toString()}`);
         console.log(`failed to ${process.env.UPLOAD_METHOD === 'AWS' ? 's3' : 'gcs'}.upload!! Printing instead!`, err.toString())
         console.log(JSON.stringify(data))
     }
@@ -231,10 +231,23 @@ async function main(){
 
     // run sendTx every SEND_TX_INTERVAL
     const interval = eval(process.env.SEND_TX_INTERVAL)
-    setInterval(()=>{
-      sendTx()
+    setInterval(async()=>{
+        try{
+            await sendTx()
+        } catch(err){
+            console.log("failed to execute sendTx", err.toString())
+        }
     }, interval)
-    sendTx()
+    try{
+        await sendTx()
+    } catch(err){
+        console.log("failed to execute sendTx", err.toString())
+    }
 }
 
-main();
\ No newline at end of file
+try{
+    main()
+}
+catch(err){
+    console.log("failed to execute main", err.toString())
+}
\ No newline at end of file
diff --git a/klaytn-tx-latency-measurement/sendtx_klaytn.js b/klaytn-tx-latency-measurement/sendtx_klaytn.js
index e7b697c..c171d5e 100644
--- a/klaytn-tx-latency-measurement/sendtx_klaytn.js
+++ b/klaytn-tx-latency-measurement/sendtx_klaytn.js
@@ -112,7 +112,7 @@ function loadConfig() {
 }
 
 async function sendSlackMsg(msg) {
-    axios.post(process.env.SLACK_API_URL, {
+    await axios.post(process.env.SLACK_API_URL, {
         'channel':process.env.SLACK_CHANNEL,
         'mrkdown':true,
         'text':msg
@@ -130,7 +130,7 @@ async function checkBalance(addr) {
     const balanceInKLAY = caver.utils.convertFromPeb(balance, 'KLAY')
     const now = new Date();
     if(parseFloat(balanceInKLAY) < parseFloat(process.env.BALANCE_ALERT_CONDITION_IN_KLAY)) {
-        sendSlackMsg(`${now}, Current balance of <${process.env.SCOPE_URL}/account/${addr}|${addr}> is less than ${process.env.BALANCE_ALERT_CONDITION_IN_KLAY} KLAY! balance=${balanceInKLAY}`)
+        await sendSlackMsg(`${now}, Current balance of <${process.env.SCOPE_URL}/account/${addr}|${addr}> is less than ${process.env.BALANCE_ALERT_CONDITION_IN_KLAY} KLAY! balance=${balanceInKLAY}`)
     }
 
 }
@@ -206,7 +206,7 @@ async function sendTx() {
         // console.log(`${data.executedAt},${data.chainId},${data.txhash},${data.startTime},${data.endTime},${data.latency},${data.txFee},${data.txFeeInUSD},${data.resourceUsedOfLatestBlock},${data.numOfTxInLatestBlock},${data.pingTime},${data.error}`)
     } catch (err) {
          const now = new Date();
-        sendSlackMsg(`${now}, failed to execute Klaytn, ${err.toString()}`);
+        await sendSlackMsg(`${now}, failed to execute Klaytn, ${err.toString()}`);
         console.log("failed to execute.", err.toString())
         data.error = err.toString()
         // console.log(`${data.executedAt},${data.chainId},${data.txhash},${data.startTime},${data.endTime},${data.latency},${data.txFee},${data.txFeeInUSD},${data.resourceUsedOfLatestBlock},${data.numOfTxInLatestBlock},${data.pingTime},${data.error}`)
@@ -214,7 +214,7 @@ async function sendTx() {
     try{
         await uploadChoice(data)
     } catch(err){
-        sendSlackMsg(`failed to upload Klaytn, ${err.toString()}`);
+        await sendSlackMsg(`failed to upload Klaytn, ${err.toString()}`);
         console.log(`failed to ${process.env.UPLOAD_METHOD === 'AWS'? 's3': 'gcs'}.upload!! Printing instead!`, err.toString())
         console.log(JSON.stringify(data))
     }
@@ -235,10 +235,24 @@ async function main() {
 
     // run sendTx every 1 min.
     const interval = eval(process.env.SEND_TX_INTERVAL)
-    setInterval(()=>{
-        sendTx()
+    
+    setInterval(async()=>{
+        try{
+            await sendTx()
+        } catch(err){
+            console.log("failed to execute sendTx", err.toString())
+        }
     }, interval)
-    sendTx()
+    try{
+        await sendTx()
+    } catch(err){
+        console.log("failed to execute sendTx", err.toString())
+    }
+}
+loadConfig();
+try{
+    main()
 }
-loadConfig()
-main()
\ No newline at end of file
+catch(err){
+    console.log("failed to execute main", err.toString())
+}
\ No newline at end of file
diff --git a/near-tx-latency-measurement/sendtx_near.js b/near-tx-latency-measurement/sendtx_near.js
index 05a46d6..34a5e57 100644
--- a/near-tx-latency-measurement/sendtx_near.js
+++ b/near-tx-latency-measurement/sendtx_near.js
@@ -61,7 +61,7 @@ async function makeParquetFile(data) {
 }  
 
 async function sendSlackMsg(msg) {
-    axios.post(process.env.SLACK_API_URL, {
+    await axios.post(process.env.SLACK_API_URL, {
         'channel':process.env.SLACK_CHANNEL,
         'mrkdown':true,
         'text':msg
@@ -155,7 +155,7 @@ async function sendTx() {
         if(balance < parseFloat(process.env.BALANCE_ALERT_CONDITION_IN_NEAR))
         {
             const now = new Date();
-            sendSlackMsg(`${now}, Current balance of <${process.env.SCOPE_URL}/accounts/${sender}|${sender}> is less than ${process.env.BALANCE_ALERT_CONDITION_IN_NEAR} NEAR! balance=${balance} NEAR`)
+            await sendSlackMsg(`${now}, Current balance of <${process.env.SCOPE_URL}/accounts/${sender}|${sender}> is less than ${process.env.BALANCE_ALERT_CONDITION_IN_NEAR} NEAR! balance=${balance} NEAR`)
         }
 
         // gets sender's public key
@@ -285,7 +285,7 @@ async function sendTx() {
         // console.log(`${data.executedAt},${data.chainId},${data.txhash},${data.startTime},${data.endTime},${data.latency},${data.txFee},${data.txFeeInUSD},${data.resourceUsedOfLatestBlock},${data.numOfTxInLatestBlock},${data.pingTime},${data.error}`)
     } catch(err){
          const now = new Date();
-    sendSlackMsg(`${now}, failed to execute Near, ${err.toString()}`);
+    await sendSlackMsg(`${now}, failed to execute Near, ${err.toString()}`);
         console.log("failed to execute.", err.toString())
         data.error = err.toString()
         // console.log(`${data.executedAt},${data.chainId},${data.txhash},${data.startTime},${data.endTime},${data.latency},${data.txFee},${data.txFeeInUSD},${data.resourceUsedOfLatestBlock},${data.numOfTxInLatestBlock},${data.pingTime},${data.error}`)
@@ -293,7 +293,7 @@ async function sendTx() {
     try{
         await uploadChoice(data)
     } catch(err){
-        sendSlackMsg(`failed to upload Near, ${err.toString()}`);
+        await sendSlackMsg(`failed to upload Near, ${err.toString()}`);
         console.log(`failed to ${process.env.UPLOAD_METHOD === 'AWS'? 's3': 'gcs'}.upload!! Printing instead!`, err.toString())
         console.log(JSON.stringify(data))
     }
@@ -314,12 +314,27 @@ async function main (){
     
     // run sendTx every SEND_TX_INTERVAL(sec).
     const interval = eval(process.env.SEND_TX_INTERVAL)
-        setInterval(()=>{
-        sendTx();
+    setInterval(async()=>{
+        try{
+            await sendTx()
+        } catch(err){
+            console.log("failed to execute sendTx", err.toString())
+        }
     }, interval)
-    sendTx()
-}
+    try{
+        await sendTx()
+    } catch(err){
+        console.log("failed to execute sendTx", err.toString())
+    }
+    }
+    
+    
   
 
 // run the function
-main();
\ No newline at end of file
+try{
+    main()
+}
+catch(err){
+    console.log("failed to execute main", err.toString())
+}
\ No newline at end of file
diff --git a/optimism-tx-latency-measurement/sendtx_optimism.js b/optimism-tx-latency-measurement/sendtx_optimism.js
index f845192..be931d1 100644
--- a/optimism-tx-latency-measurement/sendtx_optimism.js
+++ b/optimism-tx-latency-measurement/sendtx_optimism.js
@@ -53,7 +53,7 @@ async function makeParquetFile(data) {
 }
 
 async function sendSlackMsg(msg) {
-  axios.post(
+  await axios.post(
     process.env.SLACK_API_URL,
     {
       channel: process.env.SLACK_CHANNEL,
@@ -182,7 +182,7 @@ async function sendTx() {
 
     if (balance < parseFloat(process.env.BALANCE_ALERT_CONDITION_IN_OPT)) {
       const now = new Date();
-      sendSlackMsg(
+      await sendSlackMsg(
         `${now}, Current balance of <${process.env.SCOPE_URL}/address/${signer.address}|${signer.address}> is less than ${process.env.BALANCE_ALERT_CONDITION_IN_OPT} OPT! balance=${balance} OPT`
       );
     }
@@ -264,7 +264,7 @@ async function sendTx() {
     // console.log(`${data.executedAt},${data.chainId},${data.txhash},${data.startTime},${data.endTime},${data.latency},${data.txFee},${data.txFeeInUSD},${data.resourceUsedOfLatestBlock},${data.numOfTxInLatestBlock},${data.pingTime},${data.error}`)
   } catch (err) {
     const now = new Date();
-    sendSlackMsg(`${now}, failed to execute optimism, ${err.toString()}`);
+    await sendSlackMsg(`${now}, failed to execute optimism, ${err.toString()}`);
     console.log("failed to execute.", err.toString());
     data.error = err.toString();
     // console.log(`${data.executedAt},${data.chainId},${data.txhash},${data.startTime},${data.endTime},${data.latency},${data.txFee},${data.txFeeInUSD},${data.resourceUsedOfLatestBlock},${data.numOfTxInLatestBlock},${data.pingTime},${data.error}`)
@@ -272,7 +272,7 @@ async function sendTx() {
   try {
     await uploadChoice(data);
   } catch (err) {
-    sendSlackMsg(`failed to upload optimism, ${err.toString()}`);
+    await sendSlackMsg(`failed to upload optimism, ${err.toString()}`);
     console.log(
       `failed to ${process.env.UPLOAD_METHOD === "AWS" ? "s3" : "gcs"}.upload!! Printing instead!`,
       err.toString()
@@ -318,10 +318,10 @@ async function l1commitmentprocess(db, hash, createdAt) {
     if (postIndex !== -1) {
       console.log("L1 tx hash not found");
       db.data.posts[postIndex].status = "failed";
-      sendL1FailedSlackMsg(`L1 tx hash not found for ${hash}!`);
+      await sendSlackMsg(`L1 tx hash not found for ${hash}!`);
       return null;
     } else {
-      sendL1FailedSlackMsg(`l2 ${hash} not found!`);
+      await sendSlackMsg(`l2 ${hash} not found!`);
       return Error("l2TxHash not found.");
     }
   }
@@ -337,7 +337,7 @@ async function l1commitmentprocess(db, hash, createdAt) {
     gcpData.hash = hash;
     uploadToGCSL1(gcpData)
   } else {
-    sendL1FailedSlackMsg(`l2 ${hash} not found!`);
+    await sendSlackMsg(`l2 ${hash} not found!`);
     return Error("l2TxHash not found.");
   }
 }
@@ -359,11 +359,24 @@ async function main() {
 
   // run sendTx every SEND_TX_INTERVAL
   const interval = eval(process.env.SEND_TX_INTERVAL);
-  setInterval(() => {
-    sendTx();
-    l1Checker();
-  }, interval);
-  sendTx()
+  setInterval(async()=>{
+    try{
+        await sendTx()
+        await l1Checker();
+    } catch(err){
+        console.log("failed to execute sendTx", err.toString())
+    }
+}, interval)
+try{
+    await sendTx()
+} catch(err){
+    console.log("failed to execute sendTx", err.toString())
+}
 }
 
-main();
+try{
+    main()
+}
+catch(err){
+    console.log("failed to execute main", err.toString())
+}
diff --git a/polkadot-tx-latency-measurement/sendtx_polkadot.js b/polkadot-tx-latency-measurement/sendtx_polkadot.js
index 1b44dff..c79067c 100644
--- a/polkadot-tx-latency-measurement/sendtx_polkadot.js
+++ b/polkadot-tx-latency-measurement/sendtx_polkadot.js
@@ -57,7 +57,7 @@ async function makeParquetFile(data) {
 }
 
 async function sendSlackMsg(msg) {
-    axios.post(process.env.SLACK_API_URL, {
+    await axios.post(process.env.SLACK_API_URL, {
         'channel':process.env.SLACK_CHANNEL,
         'mrkdown':true,
         'text':msg
@@ -158,7 +158,7 @@ async function sendTx(){
         if(balance < parseFloat(process.env.BALANCE_ALERT_CONDITION_IN_DOT))
         {
             const now = new Date();
-            sendSlackMsg(`${now}, Current balance of <${process.env.SCOPE_URL}/account/${senderAddress}|${senderAddress}> is less than ${process.env.BALANCE_ALERT_CONDITION_IN_DOT} DOT! balance=${balance} DOT`)
+            await sendSlackMsg(`${now}, Current balance of <${process.env.SCOPE_URL}/account/${senderAddress}|${senderAddress}> is less than ${process.env.BALANCE_ALERT_CONDITION_IN_DOT} DOT! balance=${balance} DOT`)
         }
 
         const startGetBlock = new Date().getTime()
@@ -220,7 +220,7 @@ async function sendTx(){
         })
     } catch(err){
          const now = new Date();
-    sendSlackMsg(`${now}, failed to execute polkadot, ${err.toString()}`);
+    await sendSlackMsg(`${now}, failed to execute polkadot, ${err.toString()}`);
         console.log("failed to execute.", err.toString())
         data.error = err.toString()
         console.log(`${data.executedAt},${data.chainId},${data.txhash},${data.startTime},${data.endTime},${data.latency},${data.txFee},${data.txFeeInUSD},${data.resourceUsedOfLatestBlock},${data.numOfTxInLatestBlock},${data.pingTime},${data.error}`)
@@ -245,10 +245,23 @@ async function main(){
 
     // run sendTx every SEND_TX_INTERVAL
     const interval = eval(process.env.SEND_TX_INTERVAL)
-    setInterval(()=>{
-        sendTx()
+    setInterval(async()=>{
+        try{
+            await sendTx()
+        } catch(err){
+            console.log("failed to execute sendTx", err.toString())
+        }
     }, interval)
-    sendTx()
+    try{
+        await sendTx()
+    } catch(err){
+        console.log("failed to execute sendTx", err.toString())
+    }
 }
 
-main();
\ No newline at end of file
+try{
+    main()
+}
+catch(err){
+    console.log("failed to execute main", err.toString())
+}
\ No newline at end of file
diff --git a/polygon-tx-latency-measurement/sendtx_polygon.js b/polygon-tx-latency-measurement/sendtx_polygon.js
index 2dbe625..87eaca6 100644
--- a/polygon-tx-latency-measurement/sendtx_polygon.js
+++ b/polygon-tx-latency-measurement/sendtx_polygon.js
@@ -51,7 +51,7 @@ async function makeParquetFile(data) {
 }
 
 async function sendSlackMsg(msg) {
-  axios.post(process.env.SLACK_API_URL, {
+  await axios.post(process.env.SLACK_API_URL, {
       'channel':process.env.SLACK_CHANNEL,
       'mrkdown':true,
       'text':msg
@@ -147,7 +147,7 @@ async function sendTx(){
     if(balance < parseFloat(process.env.BALANCE_ALERT_CONDITION_IN_MATIC))
     {
       const now = new Date();
-      sendSlackMsg(`${now}, Current balance of <${process.env.SCOPE_URL}/address/${signer.address}|${signer.address}> is less than ${process.env.BALANCE_ALERT_CONDITION_IN_MATIC} MATIC! balance=${balance} MATIC`)
+      await sendSlackMsg(`${now}, Current balance of <${process.env.SCOPE_URL}/address/${signer.address}|${signer.address}> is less than ${process.env.BALANCE_ALERT_CONDITION_IN_MATIC} MATIC! balance=${balance} MATIC`)
     }
 
     const latestNonce = Number(await web3.eth.getTransactionCount(signer.address, 'pending'))
@@ -238,7 +238,7 @@ async function sendTx(){
     // console.log(`${data.executedAt},${data.chainId},${data.txhash},${data.startTime},${data.endTime},${data.latency},${data.txFee},${data.txFeeInUSD},${data.resourceUsedOfLatestBlock},${data.numOfTxInLatestBlock},${data.pingTime},${data.error}`)
   } catch(err){
      const now = new Date();
-    sendSlackMsg(`${now}, failed to execute polygon, ${err.toString()}`);
+    await sendSlackMsg(`${now}, failed to execute polygon, ${err.toString()}`);
     console.log("failed to execute.", err.toString())
     data.error = err.toString()
     // console.log(`${data.executedAt},${data.chainId},${data.txhash},${data.startTime},${data.endTime},${data.latency},${data.txFee},${data.txFeeInUSD},${data.resourceUsedOfLatestBlock},${data.numOfTxInLatestBlock},${data.pingTime},${data.error}`)
@@ -246,7 +246,7 @@ async function sendTx(){
   try{
       await uploadChoice(data)
   } catch(err){
-    sendSlackMsg(`failed to upload polygon, ${err.toString()}`);
+    await sendSlackMsg(`failed to upload polygon, ${err.toString()}`);
       console.log(`failed to ${process.env.UPLOAD_METHOD === 'AWS'? 's3': 'gcs'}.upload!! Printing instead!`, err.toString())
       console.log(JSON.stringify(data))
   }
@@ -266,10 +266,22 @@ async function main(){
 
   // run sendTx every SEND_TX_INTERVAL
   const interval = eval(process.env.SEND_TX_INTERVAL)
-  setInterval(()=>{
-    sendTx()
-  }, interval)
-  sendTx()
+  setInterval(async()=>{
+    try{
+        await sendTx()
+    } catch(err){
+        console.log("failed to execute sendTx", err.toString())
+    }
+}, interval)
+try{
+    await sendTx()
+} catch(err){
+    console.log("failed to execute sendTx", err.toString())
 }
-
-main();
\ No newline at end of file
+}
+try{
+    main()
+}
+catch(err){
+    console.log("failed to execute main", err.toString())
+}
\ No newline at end of file
diff --git a/solana-tx-latency-measurement/sendtx_solana.js b/solana-tx-latency-measurement/sendtx_solana.js
index a2fe58c..163a815 100644
--- a/solana-tx-latency-measurement/sendtx_solana.js
+++ b/solana-tx-latency-measurement/sendtx_solana.js
@@ -102,7 +102,7 @@ async function uploadChoice(data) {
 }
 
 async function sendSlackMsg(msg) {
-  axios.post(process.env.SLACK_API_URL, {
+  await axios.post(process.env.SLACK_API_URL, {
       'channel':process.env.SLACK_CHANNEL,
       'mrkdown':true,
       'text':msg
@@ -136,7 +136,7 @@ async function sendZeroSol(){
     if(balance*(10**(-9)) < parseFloat(process.env.BALANCE_ALERT_CONDITION_IN_SOL))
     {
       const now = new Date();
-      sendSlackMsg(`${now}, Current balance of <${process.env.SCOPE_URL}/address/${keypair.publicKey}?cluster=${process.env.CLUSTER_NAME}|${keypair.publicKey}> is less than ${process.env.BALANCE_ALERT_CONDITION_IN_SOL} SOL! balance=${balance*(10**(-9))} SOL`)
+      await sendSlackMsg(`${now}, Current balance of <${process.env.SCOPE_URL}/address/${keypair.publicKey}?cluster=${process.env.CLUSTER_NAME}|${keypair.publicKey}> is less than ${process.env.BALANCE_ALERT_CONDITION_IN_SOL} SOL! balance=${balance*(10**(-9))} SOL`)
     }
 
     const startGetBlockHash = new Date().getTime();
@@ -204,7 +204,7 @@ async function sendZeroSol(){
     // console.log(`${data.executedAt},${data.chainId},${data.txhash},${data.startTime},${data.endTime},${data.latency},${data.txFee},${data.txFeeInUSD},${data.resourceUsedOfLatestBlock},${data.numOfTxInLatestBlock},${data.pingTime},${data.error}`)
   } catch(err){
      const now = new Date();
-    sendSlackMsg(`${now}, failed to execute solana, ${err.toString()}`);
+    await sendSlackMsg(`${now}, failed to execute solana, ${err.toString()}`);
     console.log("failed to execute.", err.toString())
     data.error = err.toString()
     // console.log(`${data.executedAt},${data.chainId},${data.txhash},${data.startTime},${data.endTime},${data.latency},${data.txFee},${data.txFeeInUSD},${data.resourceUsedOfLatestBlock},${data.numOfTxInLatestBlock},${data.pingTime},${data.error}`)
@@ -212,7 +212,7 @@ async function sendZeroSol(){
   try{
     await uploadChoice(data)
   } catch(err){
-    sendSlackMsg(`failed to upload solana, ${err.toString()}`);
+    await sendSlackMsg(`failed to upload solana, ${err.toString()}`);
     console.log(`failed to ${process.env.UPLOAD_METHOD === 'AWS'? 's3': 'gcs'}.upload!! Printing instead!`, err.toString())
     console.log(JSON.stringify(data))
   }
@@ -234,11 +234,23 @@ async function main (){
 
   // run sendTx every SEND_TX_INTERVAL(sec).
   const interval = eval(process.env.SEND_TX_INTERVAL)
-      setInterval(()=>{
-      sendZeroSol();
-  }, interval)
-  sendZeroSol();
-
+  setInterval(async()=>{
+    try{
+        await sendZeroSol()
+    } catch(err){
+        console.log("failed to execute sendTx", err.toString())
+    }
+}, interval)
+try{
+    await sendZeroSol()
+} catch(err){
+    console.log("failed to execute sendTx", err.toString())
+}
 }
 
-main();
\ No newline at end of file
+try{
+    main()
+}
+catch(err){
+    console.log("failed to execute main", err.toString())
+}
\ No newline at end of file
diff --git a/sui-tx-latency-measurement/sendtx_sui.js b/sui-tx-latency-measurement/sendtx_sui.js
index ccddb88..3c6b626 100644
--- a/sui-tx-latency-measurement/sendtx_sui.js
+++ b/sui-tx-latency-measurement/sendtx_sui.js
@@ -123,7 +123,7 @@ function loadConfig() {
 }
 
 async function sendSlackMsg(msg) {
-  axios.post(
+  await axios.post(
     process.env.SLACK_API_URL,
     {
       channel: process.env.SLACK_CHANNEL,
@@ -143,7 +143,7 @@ async function checkBalance(addr) {
   const balance = await client.getCoins({ owner: addr });
   if (parseFloat(balance) < parseFloat(process.env.BALANCE_ALERT_CONDITION_IN_SUI)) {
     const now = new Date();
-    sendSlackMsg(
+    await sendSlackMsg(
       `${now}, Current balance of <${process.env.SCOPE_URL}/address/${addr}=${process.env.CHAIN_ID}|${addr}> is less than ${process.env.BALANCE_ALERT_CONDITION_IN_SUI} SUI! balance=${balance}`
     );
   }
@@ -238,7 +238,7 @@ async function sendTx() {
     // console.log(`${data.executedAt},${data.chainId},${data.txhash},${data.startTime},${data.endTime},${data.latency},${data.txFee},${data.txFeeInUSD},${data.resourceUsedOfLatestBlock},${data.numOfTxInLatestBlock},${data.pingTime},${data.error}`)
   } catch (err) {
      const now = new Date();
-    sendSlackMsg(`${now}, failed to execute sui, ${err.toString()}`);
+    await sendSlackMsg(`${now}, failed to execute sui, ${err.toString()}`);
     console.log("failed to execute.", err.toString());
     data.error = err.toString();
     // console.log(`${data.executedAt},${data.chainId},${data.txhash},${data.startTime},${data.endTime},${data.latency},${data.txFee},${data.txFeeInUSD},${data.resourceUsedOfLatestBlock},${data.numOfTxInLatestBlock},${data.pingTime},${data.error}`)
@@ -246,7 +246,7 @@ async function sendTx() {
   try {
     await uploadChoice(data);
   } catch (err) {
-    sendSlackMsg(`failed to upload sui, ${err.toString()}`);
+    await sendSlackMsg(`failed to upload sui, ${err.toString()}`);
     console.log(
       `failed to ${process.env.UPLOAD_METHOD === "AWS" ? "s3" : "gcs"}.upload!! Printing instead!`,
       err.toString()
@@ -269,10 +269,23 @@ async function main() {
 
   // run sendTx every 1 min..
   const interval = eval(process.env.SEND_TX_INTERVAL);
-  setInterval(() => {
-    sendTx();
-  }, interval);
-  sendTx();
+  setInterval(async()=>{
+    try{
+        await sendTx()
+    } catch(err){
+        console.log("failed to execute sendTx", err.toString())
+    }
+}, interval)
+try{
+    await sendTx()
+} catch(err){
+    console.log("failed to execute sendTx", err.toString())
+}
 }
 loadConfig();
-main();
+try{
+    main()
+}
+catch(err){
+    console.log("failed to execute main", err.toString())
+}