use deferred and promise to catch non existant usernames