Promises are not working inside applicationShouldTerminate
jeff-h opened this issue · 0 comments
jeff-h commented
I'd like to gracefully clean up some stuff using Promises when my app quits, so I've implemented applicationShouldTerminate
. I'm definitely making it inside that method, but my promise code inside it only works when the app is quit via Command-Q. If I quit the app programmatically using NSApplication.shared.terminate(self)
the applicationShouldTerminate
does run, but the promises inside it do nothing.
I've tested this in a fresh project with the following:
func applicationShouldTerminate(_ sender: NSApplication) -> NSApplication.TerminateReply {
print("applicationShouldTerminate")
let promise = Promise<Void> { fulfill, reject in
print("hello")
fulfill(())
}
DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(5)) {
NSApplication.shared.reply(toApplicationShouldTerminate: true)
}
return .terminateLater
}
When I quit with cmd-Q this works perfectly but when I quit the app programmatically using NSApplication.shared.terminate(self)
it prints applicationShouldTerminate
but nothing else happens and the app never quits.
Any suggestions?