Made delegate methods non-optional.
Removed workaround that previously prevented bug (might need to be tested but it works for me).
I created an error constant and reused it in both the closure callback and the delegate callback.