diff --git a/src/prelude/await-all.ts b/src/prelude/await-all.ts
index 66303fe3ba..9492550483 100644
--- a/src/prelude/await-all.ts
+++ b/src/prelude/await-all.ts
@@ -7,16 +7,17 @@ type AwaitAll<T> = {
 export async function awaitAll<T>(obj: T): Promise<AwaitAll<T>> {
 	const target = {} as any;
 	const keys = Object.keys(obj);
-	const rawValues = Object.values(obj);
-	const retValues = ((values: any[]): any[] =>
-		values.map(value => {
-			if (!value || !value.constructor || value.constructor.name !== 'Object') return value;
-			return awaitAll(value);
-		})
-	)(rawValues);
-	const values = await Promise.all(retValues);
-	for (let i = 0; i < values.length; i++) {
-		target[keys[i]] = values[i];
+	const values = Object.values(obj);
+
+	const resolvedValues = await Promise.all(values.map(value =>
+		(value || !value.constructor || value.constructor.name !== 'Object')
+			? value
+			: awaitAll(value)
+	));
+
+	for (let i = 0; i < keys.length; i++) {
+		target[keys[i]] = resolvedValues[i];
 	}
+
 	return target;
 }