fixing keychain class in objC with custom protocols to handle return of data from other threads