import asyncio import secrets from dataclasses import dataclass # N.B. `frozen=True` makes each instance hashable. @dataclass(frozen=True) class RandBits: bits: int = 20 def __await__(self): return self.randbits().__await__() async def randbits(self): return secrets.randbits(self.bits) async def test_randbits(): """This test fails because of future dedup/coalescing in asyncio.gather.""" x, y = await asyncio.gather(RandBits(), RandBits()) assert x != y asyncio.run(test_randbits())