From 34c1fc6aa5882d46d4dfccacf97ecd7d65ad9199 Mon Sep 17 00:00:00 2001
From: Adhidarma Hadiwinoto <gua@adhisimon.org>
Date: Wed, 4 May 2016 10:47:46 +0700
Subject: [PATCH] topupRequestRetry

---
 partner-cjk.js | 32 +++++++++++++++++++++-----------
 1 file changed, 21 insertions(+), 11 deletions(-)

diff --git a/partner-cjk.js b/partner-cjk.js
index 572a6ed..31965a1 100644
--- a/partner-cjk.js
+++ b/partner-cjk.js
@@ -156,23 +156,31 @@ function topupResponseHandler(body, task) {
         }
         
         if (rc == '68') {
-            task.retry--;
-                
-            if (task.retry) {
-                logger.info('Got pending status, retrying in ' +  sleepBeforeRetry + 's');
-                setTimeout(topupRequest, sleepBeforeRetry * 1000, task, task.retry);
-            }
-            else {
-                logger.warn('Maximum retry for pending status exceeded', {task: task});
-            }
+            topupRequestRetry(task);
         }
     });
 }
 
+function topupRequestRetry(task) {
+    task.retry--;
+                
+    if (task.retry > 0) {
+        logger.info('Retrying in ' +  sleepBeforeRetry + 's');
+        setTimeout(topupRequest, sleepBeforeRetry * 1000, task, task.retry);
+    }
+    else {
+        logger.warn('Maximum retry for pending status exceeded', {task: task});
+    }
+}
+
 function topupRequest(task, retry) {
         
     if (retry === undefined) {
-        task.retry = maxRetry;
+        retry = maxRetry;
+    }
+    
+    if (!task.retry) {
+        task.retry = retry;
     }
 
     var remoteProduct = task.remoteProduct.split(',');
@@ -214,7 +222,9 @@ function topupRequest(task, retry) {
     
     req.on('error', function(e) {
         logger.warn('problem with request: ' + e.message);
-        callbackReport(task['requestId'], '40', e.message);
+        callbackReport(task['requestId'], '68', e.message);
+        
+        topupRequestRetry(task);
     });
 
     req.write(postBody);
-- 
1.9.0