Browse Source

refactor: try to make `id-taken.await` clearer

Jonas Gloning 1 year ago
parent
commit
5edbfd5fac
2 changed files with 20 additions and 20 deletions
  1. 18 18
      e2e/peer/id-taken.await.html
  2. 2 2
      e2e/peer/id-taken.html

+ 18 - 18
e2e/peer/id-taken.await.html

@@ -22,25 +22,25 @@
 				const errorMessage = document.getElementById("error-message");
 				const errorMessage = document.getElementById("error-message");
 
 
 				// Peer A should be created without an error
 				// Peer A should be created without an error
-				try {
-					const peerA = await new Peer();
-					// Create 10 new `Peer`s that will try to steel A's id
-					let peers_try_to_take = Array.from({ length: 10 }, async (_, i) => {
-						try {
-							await new Peer(peerA.id);
-							throw `Peer ${i} failed! Connection got established.`;
-						} catch (error) {
-							if (error.type === "unavailable-id") {
-								return `ID already taken. (${i})`;
-							} else {
-								throw error;
-							}
-						}
-					});
-					await Promise.all(peers_try_to_take);
+				const peerA = await new Peer().catch(
+					(error) => (errorMessage.textContent += JSON.stringify(error)),
+				);
+
+				// Create 10 new `Peer`s that will try to steel A's id
+				// Wait for all peers to finish
+				const steeling_peers = await Promise.allSettled(
+					Array.from({ length: 10 }, () => new Peer(peerA.id)),
+				);
+
+				if (
+					steeling_peers.every(
+						({ reason, status }) =>
+							status === "rejected" && reason.type === "unavailable-id",
+					)
+				) {
 					messages.textContent = "No ID takeover";
 					messages.textContent = "No ID takeover";
-				} catch (error) {
-					errorMessage.textContent += JSON.stringify(error);
+				} else {
+					errorMessage.textContent += JSON.stringify(steeling_peers);
 				}
 				}
 			})();
 			})();
 		</script>
 		</script>

+ 2 - 2
e2e/peer/id-taken.html

@@ -28,7 +28,7 @@
 				)
 				)
 				.once("open", (id) => {
 				.once("open", (id) => {
 					// Create 10 new `Peer`s that will try to steel A's id
 					// Create 10 new `Peer`s that will try to steel A's id
-					let peers_try_to_take = Array.from(
+					const steeling_peers = Array.from(
 						{ length: 10 },
 						{ length: 10 },
 						(_, i) =>
 						(_, i) =>
 							new Promise((resolve, reject) =>
 							new Promise((resolve, reject) =>
@@ -45,7 +45,7 @@
 									}),
 									}),
 							),
 							),
 					);
 					);
-					Promise.all(peers_try_to_take)
+					Promise.all(steeling_peers)
 						.then(() => (messages.textContent = "No ID takeover"))
 						.then(() => (messages.textContent = "No ID takeover"))
 						.catch(
 						.catch(
 							(error) => (errorMessage.textContent += JSON.stringify(error)),
 							(error) => (errorMessage.textContent += JSON.stringify(error)),