             
             self.queue.async {
                 guard let calendar = self.calendar else {
-                    return completion(.failure(.invalidData))
+                    return DispatchQueue.main.async {
+                        completion(.failure(.invalidData))
+                    }
                 }
                 
                 let events = self.store.events(

            
            self.queue.async {
                guard let calendar = self.calendar else {
                    completion?(.failure(.invalidData))
                    return
                }
                
                let event = EKEvent(eventStore: self.store).with {

            
            self.queue.async {
                guard let calendar = self.calendar else {
                    return DispatchQueue.main.async {
                        completion?(.failure(.invalidData))
                    }
                }
                
                let events = elements.map { element in
