                 break
             }
         }
+
+        if mode == .OneShot {
+            updateHandler?(location)
+            updateHandler = nil
+            active = false
+        }
     }
 
     // MARK: Responding to Authorization Changes

                longitude: kCLLocationCoordinate2DInvalid.longitude
            )

        case .NotDetermined:
            break
        }

        log({ "location updated: \(newLocation.coordinate)" }, level: .Verbose)

        let locationAge = abs(newLocation.timestamp.timeIntervalSinceNow)
        if mode == .Continuous && locationAge > maxLocationAge || newLocation.horizontalAccuracy < 0.0 {
            log({ "ignoring old location" }, level: .Info)
            return
        }
