         logger.logError("Location permission has NOT been granted")
         
         delegate?.didFailLocationUpdate(nil)
+    }
+    
+    private func sendCachedLocationIfPresent() -> Bool {
+        if let currentLocation = currentLocation {
+            logger.logDebug("Sending last fetched location")
+
+            delegate?.didUpdateLocation(currentLocation, isCachedLocation: true)
+            
+            return true
+        }
+        return false
     }
 }
 

    }
    
    private func requestUpdatedLocation() {
        locationManager.startUpdatingLocation()
    }
    

        logger.logError("Getting updated location failed with error \(error.localizedDescription)")
        
        currentLocationSerialQueue.sync { [weak self] in
            guard let `self` = self else { return }
            
            let isCachedLocationPresent = self.sendCachedLocationIfPresent()
            if !isCachedLocationPresent {
                self.delegate?.didFailLocationUpdate(error)
            }
        }
    }
