public async Task<IUser> Login(string id, string password, IUserObserver observer)
{
if (id == null)
throw new ArgumentNullException(nameof(id));
if (password == null)
throw new ArgumentNullException(nameof(password));
// Check account
var ok = CheckAccount(id, password);
if (ok == false)
throw new InvalidCredentialException();
// Make UserActor and bind it
var user = Context.System.InterfacedActorOf(Props.Create(() => new UserActor(id, observer))).Cast<UserRef>();
return (await _actorBoundChannel.BindActor(user)).Cast<UserRef>();
}