diff --git a/Branch-SDK/src/io/branch/referral/Branch.java b/Branch-SDK/src/io/branch/referral/Branch.java
index <HASH>..<HASH> 100644
--- a/Branch-SDK/src/io/branch/referral/Branch.java
+++ b/Branch-SDK/src/io/branch/referral/Branch.java
@@ -3015,16 +3015,20 @@ public class Branch {
                             } catch (Exception ignore) {
                             }
                         }
-                        //Publish success to listeners
-                        thisReq_.onRequestSucceeded(serverResponse, branchReferral_);
 
+                        requestQueue_.dequeue();
+                        
                         //If this request changes a session update the session-id to queued requests.
                         if (thisReq_.isSessionInitRequest()) {
                             updateAllRequestsInQueue();
                             initState_ = SESSION_STATE.INITIALISED;
+                            //Publish success to listeners
+                            thisReq_.onRequestSucceeded(serverResponse, branchReferral_);
                             checkForAutoDeepLinkConfiguration();
+                        }else {
+                            //Publish success to listeners
+                            thisReq_.onRequestSucceeded(serverResponse, branchReferral_);
                         }
-                        requestQueue_.dequeue();
                     }
                     networkCount_ = 0;
                     if (hasNetwork_ && initState_ != SESSION_STATE.UNINITIALISED) {
Fixing issue of calling init finished before setting init state

Init sate is set before calling resultant callbacks to notify Async
result