     }
 
     func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
-        currentLocation = manager.location?.coordinate
-        getWeatherViaLocation()
+        currentLocationSerialQueue.sync {
+            currentLocation = manager.location?.coordinate
+            guard let currentLocation = currentLocation else {
+                if #available(macOS 11.0, *) {
+                    logger.error("Getting location failed")
+                }
+                DispatchQueue.main.async { [weak self] in
+                    self?.statusItem.title = self?.locationErrorString
+                }
+                return
+            }
+            getWeatherViaLocation(currentLocation)
+        }
     }
 }

        })
    }

    private func updateUI(_ data: WeatherData) {
        DispatchQueue.main.async { [weak self] in
            guard let `self` = self else { return }

            self.statusItem.title = data.textualRepresentation
            self.statusItem.menu?.item(at: 0)?.title = data.location ?? self.unknownString

            let image = NSImage(named: data.weatherCondition.rawValue)
            image?.isTemplate = true
            self.statusItem.image = image
        }
    }

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

    /// Popover stuff for listening for clicks outside the configure window
    private func showPopover(_ sender: AnyObject?) {

    )

    func applicationDidFinishLaunching(_ aNotification: Notification) {
        let menu = NSMenu()
        menu.addItem(withTitle: "Unknown Location", action: nil, keyEquivalent: "")
        menu.addItem(.separator())
