         }
         
         for request in completeRequests {
-            if request.completed == false {
-                request.completed = true
-                if request.expired {
+            guard request.isCompleted == false else {
+                continue
+            }
+            request.isCompleted = true
+            if request.isExpired {
+                self.executeClosureSyncOnMainQueueIfNecessary {
+                    request.completionHandler?(.failure(PositionErrorType.timedOut))
+                }
+            } else {
+                if let location = self.locations?.first {
                     self.executeClosureSyncOnMainQueueIfNecessary {
-                        request.completionHandler?(nil, PositionErrorType.timedOut)
+                        request.completionHandler?(.success(location))
                     }
                 } else {
                     self.executeClosureSyncOnMainQueueIfNecessary {
-                        request.completionHandler?(self.locations?.first, nil)
+                        request.completionHandler?(.failure(PositionErrorType.timedOut))
                     }
                 }
             }


extension PositionLocationManager {
   
    internal func performOneShotLocationUpdate(withDesiredAccuracy desiredAccuracy: Double, completionHandler: @escaping OneShotCompletionHandler) {
        if self.locationServicesStatus == .allowedAlways ||
            self.locationServicesStatus == .allowedWhenInUse {
            
            self.executeClosureAsyncOnRequestQueueIfNecessary {
                let request = PositionLocationRequest()
                request.desiredAccuracy = desiredAccuracy
                request.lifespan = OneShotRequestTimeOut
                request.timeOutHandler = {
                    self.processLocationRequests()
                }

            // check if a request completed, meaning expired or met horizontal accuracy
            //print("desiredAccuracy \(request.desiredAccuracy) horizontal \(self.location?.horizontalAccuracy)")
            if let location = self.locations?.first {
                guard request.isExpired == true || location.horizontalAccuracy < request.desiredAccuracy else {
                    return false
                }
                return true
