diff --git a/src/server/api/service/twitter.ts b/src/server/api/service/twitter.ts
index 0de2e68c60..284ae7ee22 100644
--- a/src/server/api/service/twitter.ts
+++ b/src/server/api/service/twitter.ts
@@ -118,21 +118,27 @@ if (config.twitter == null) {
 				return;
 			}
 
-			redis.get(sessid, async (_, twCtx) => {
-				const result = await twAuth.done(JSON.parse(twCtx), ctx.query.oauth_verifier);
-
-				const user = await User.findOne({
-					host: null,
-					'twitter.userId': result.userId
-				}) as ILocalUser;
-
-				if (user == null) {
-					ctx.throw(404, `@${result.screenName}と連携しているMisskeyアカウントはありませんでした...`);
-					return;
-				}
-
-				signin(ctx, user, true);
+			const get = new Promise<any>((res, rej) => {
+				redis.get(sessid, async (_, twCtx) => {
+					res(twCtx);
+				});
 			});
+
+			const twCtx = await get;
+
+			const result = await twAuth.done(JSON.parse(twCtx), ctx.query.oauth_verifier);
+
+			const user = await User.findOne({
+				host: null,
+				'twitter.userId': result.userId
+			}) as ILocalUser;
+
+			if (user == null) {
+				ctx.throw(404, `@${result.screenName}と連携しているMisskeyアカウントはありませんでした...`);
+				return;
+			}
+
+			signin(ctx, user, true);
 		} else {
 			const verifier = ctx.query.oauth_verifier;