1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
discard """
output: '''
timeout
runForever should throw ValueError, this is expected
'''
"""
import asyncdispatch
proc failingAwaitable(p: int) {.async.} =
await sleepAsync(500)
if p > 0:
raise newException(Exception, "my exception")
proc main() {.async.} =
let fut = failingAwaitable(1)
try:
await fut or sleepAsync(100)
if fut.finished:
echo "finished"
else:
echo "timeout"
except:
echo "failed"
# Previously this would raise "An attempt was made to complete a Future more than once."
try:
asyncCheck main()
runForever()
except ValueError:
echo "runForever should throw ValueError, this is expected"
|