      A method for retrieving events with a predicate in date sorted order.
      - Parameter predicate: A NSPredicate.
      - Parameter completion: A completion call back.
-     */
-    open func reminders(matching predicate: NSPredicate, completion: @escaping ([EKReminder]) -> Void) {
-        eventStore.fetchReminders(matching: predicate, completion: { [completion = completion] (reminders) in
+     - Returns: A fetch reminders request identifier.
+     */
+    @discardableResult
+    open func reminders(matching predicate: NSPredicate, completion: @escaping ([EKReminder]) -> Void) -> Any {
+        return eventStore.fetchReminders(matching: predicate, completion: { [completion = completion] (reminders) in
             DispatchQueue.main.async { [completion = completion] in
                 completion(reminders ?? [])
             }

    /**
     A delegation method that is executed when a new Reminders list is created
     - Parameter reminders: A reference to the Reminders.
     - Parameter list: A reference to the calendar created
     - Parameter created: A boolean describing if the operation succeeded or not.
     */
    @objc
    optional func reminders(reminders: Reminders, list: EKCalendar, created: Bool)
    
    /**
     A delegation method that is executed when a new Reminders list is created
     - Parameter reminders: A reference to the Reminder.
     - Parameter list: A reference to the calendar created
     - Parameter deleted: A boolean describing if the operation succeeded or not.
     */
    @objc
    optional func reminders(reminders: Reminders, list: EKCalendar, deleted: Bool)
    
    /**
     A delegation method that is executed when a new Reminders list is created

                    return
                }
                
                completion?(success ? calendar : nil, error)
                s.delegate?.reminders?(reminders: s, calendar: calendar, error: error)
            }
        }
    }
    
    /**
     A method for deleting existing Reminder lists,
     - Parameter calendar identifier: the name of the list.
     - Parameter completion: An optional completion call back.
     */
    open func delete(calendar identifier: String, completion: ((Bool, Error?) -> Void)? = nil) {
        DispatchQueue.global(qos: .default).async { [weak self, completion = completion] in
            guard let s = self else {
                return
            }
            
            guard let calendar = s.eventStore.calendar(withIdentifier: identifier) else {
                return
            }
            
            var deleted = false
            var error: Error?
            
            do {
                try s.eventStore.removeCalendar(calendar, commit: true)
                deleted = true
            } catch let e {
                error = e
            }
            
            DispatchQueue.main.async { [weak self, completion = completion] in
                guard let s = self else {
                    return
                }
                
                s.delegate?.reminders?(reminders: s, calendar: calendar, deleted: deleted)
                completion?(deleted, error)
            }
        }
