diff --git a/packages/backend/src/core/NoteDeleteService.ts b/packages/backend/src/core/NoteDeleteService.ts
index dd878f7bb..3612ac806 100644
--- a/packages/backend/src/core/NoteDeleteService.ts
+++ b/packages/backend/src/core/NoteDeleteService.ts
@@ -121,10 +121,8 @@ export class NoteDeleteService {
 	}
 
 	@bindThis
-	private async findCascadingNotes(note: Note) {
-		const cascadingNotes: Note[] = [];
-
-		const recursive = async (noteId: string) => {
+	private async findCascadingNotes(note: Note): Promise<Note[]> {
+		const recursive = async (noteId: string): Promise<Note[]> => {
 			const query = this.notesRepository.createQueryBuilder('note')
 				.where('note.replyId = :noteId', { noteId })
 				.orWhere(new Brackets(q => {
@@ -133,12 +131,14 @@ export class NoteDeleteService {
 				}))
 				.leftJoinAndSelect('note.user', 'user');
 			const replies = await query.getMany();
-			for (const reply of replies) {
-				cascadingNotes.push(reply);
-				await recursive(reply.id);
-			}
+
+			return [
+				replies,
+				...await Promise.all(replies.map(reply => recursive(reply.id))),
+			].flat();
 		};
-		await recursive(note.id);
+
+		const cascadingNotes: Note[] = await recursive(note.id);
 
 		return cascadingNotes.filter(note => note.userHost === null); // filter out non-local users
 	}