88 * @see https://teamhanko.github.io/hanko/#/management/listUser
89 */
90 getCurrent(): Promise<User> {
91 return new Promise<User>((resolve, reject) => 92 this.client 93 .get("/me") 94 .then((response) => { 95 if (response.ok) { 96 return response.json(); 97 } else if ( 98 response.status === 400 || 99 response.status === 401 ||100 response.status === 404101 ) {102 throw new UnauthorizedError();103 } else {104 throw new TechnicalError();105 }106 })107 .then((me: Me) => {108 return this.client.get(`/users/${me.id}`);109 })110 .then((response) => {111 if (response.ok) {112 return resolve(response.json());113 } else if (114 response.status === 400 ||115 response.status === 401 ||116 response.status === 404117 ) {118 throw new UnauthorizedError();119 } else {120 throw new TechnicalError();121 }122 })123 .catch((e) => {124 reject(e);125 })126 );
127 }
128}
Using promises is forbidden in places where the TypeScript compiler allows them but they are not handled properly. These situations can often arise due to a missing await keyword or just a misunderstanding of the way async functions are handled/awaited.
const promise = Promise.resolve('value');
if (promise) {
// Do something
}
const val = promise ? 123 : 456;
while (promise) {
// Do something
}
const promise = Promise.resolve('value');
if (await promise) {
// Do something
}
const val = (await promise) ? 123 : 456;
while (await promise) {
// Do something
}
for (const value of [1, 2, 3]) {
await doSomething(value);
}
new Promise((resolve, reject) => {
// Do something
resolve();
});
const eventEmitter = new EventEmitter();
eventEmitter.on('some-event', () => {
doSomething();
});