refactor: Improve error handling and retry logic in getSeedersAndPeers function

This commit is contained in:
ChristoferMendes 2024-05-15 20:06:09 -03:00
parent 04a5dbb71d
commit 7a2b693397

View file

@ -6,17 +6,27 @@ type WebTorrentHealthData = {
};
export const webTorrentData = {
async getSeedersAndPeers(magnet: string) {
async getSeedersAndPeers(magnet: string, retry = 0, timeout = 1500) {
return new Promise((resolve, reject) => {
WebTorrentHealth(magnet, (err: Error, data: WebTorrentHealthData) => {
if (err) {
return reject(err);
WebTorrentHealth(
magnet,
{ timeout },
(err: Error, data: WebTorrentHealthData) => {
if (err) {
return reject(err);
}
const { peers, seeds } = data;
if ((!peers || !seeds) && retry < 3) {
return resolve(
webTorrentData.getSeedersAndPeers(magnet, retry + 1, timeout * 2)
);
}
return resolve({ peers, seeders: seeds });
}
const { peers, seeds } = data;
return resolve({ peers, seeders: seeds });
});
);
});
},
};