Skip to content

Commit a6e45d6

Browse files
authored
chore: list raised exceptions in utils module (#1252)
part of #962 effort.
1 parent 37e0f61 commit a6e45d6

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

libp2p/utils/future.nim

+10-6
Original file line numberDiff line numberDiff line change
@@ -13,21 +13,25 @@ import chronos
1313

1414
type AllFuturesFailedError* = object of CatchableError
1515

16-
proc anyCompleted*[T](futs: seq[Future[T]]): Future[Future[T]] {.async.} =
16+
proc anyCompleted*[T](
17+
futs: seq[Future[T]]
18+
): Future[Future[T]] {.async: (raises: [AllFuturesFailedError, CancelledError]).} =
1719
## Returns a future that will complete with the first future that completes.
1820
## If all futures fail or futs is empty, the returned future will fail with AllFuturesFailedError.
1921

2022
var requests = futs
2123

2224
while true:
23-
if requests.len == 0:
25+
var raceFut: Future[T]
26+
27+
try:
28+
raceFut = await one(requests)
29+
if raceFut.completed:
30+
return raceFut
31+
except ValueError:
2432
raise newException(
2533
AllFuturesFailedError, "None of the futures completed successfully"
2634
)
2735

28-
var raceFut = await one(requests)
29-
if raceFut.completed:
30-
return raceFut
31-
3236
let index = requests.find(raceFut)
3337
requests.del(index)

0 commit comments

Comments
 (0)