     }
     
     func handleLocation(placemarks: [AnyObject]) {
+        println("handling location")
         if placemarks.isEmpty {
             println("Error with the data.")
         } else {
             let pm:CLPlacemark = placemarks.first as! CLPlacemark
             let locale:NSLocale = LocaleUtils.createLocaleFromCountryCode(pm.ISOcountryCode)
             
-            self.promise!.success(locale)
+            if(promiseInProgress){
+                self.promise!.success(locale)
+                promiseInProgress = false
+            }
             locationManager.stopUpdatingLocation()
         }
     }    
 
     func getUserCurrentLocale(withOverride:Bool) -> Future<NSLocale> {
         self.promise = Promise<NSLocale>()
+        self.promiseInProgress = true
 
         if withOverride {
             if let override = self.returnOverridedGPSLocationIfSet() {

    func locationManager(manager: CLLocationManager!, didFailWithError error: NSError!) {
        if let locale = CelluarLocationManager.getCountryLocaleByCelluar() {
            self.promise!.success(locale)
        } else {
            "Fallback failed"
            self.promise!.failure(error)

    }
    
    func handleError(error : NSError!) {
        println("got error")
        if (error != nil) {
            return
        }
