diff --git a/discord/client.py b/discord/client.py index d2819ce21..ec05cb205 100644 --- a/discord/client.py +++ b/discord/client.py @@ -678,7 +678,7 @@ class Client: return result - future = asyncio.Future(loop=self.loop) + future = compat.create_future(self.loop) self._listeners.append((predicate, future, WaitForType.message)) try: message = yield from asyncio.wait_for(future, timeout, loop=self.loop) @@ -788,7 +788,7 @@ class Client: return result - future = asyncio.Future(loop=self.loop) + future = compat.create_future(self.loop) self._listeners.append((predicate, future, WaitForType.reaction)) try: return (yield from asyncio.wait_for(future, timeout, loop=self.loop)) diff --git a/discord/compat.py b/discord/compat.py index 432942545..3b9e66ff8 100644 --- a/discord/compat.py +++ b/discord/compat.py @@ -31,6 +31,15 @@ try: except AttributeError: create_task = asyncio.async +try: + _create_future = asyncio.AbstractEventLoop.create_future +except AttributeError: + def create_future(loop): + return asyncio.Future(loop=loop) +else: + def create_future(loop): + return loop.create_future() + try: run_coroutine_threadsafe = asyncio.run_coroutine_threadsafe except AttributeError: diff --git a/discord/gateway.py b/discord/gateway.py index e88021c9c..9897ca423 100644 --- a/discord/gateway.py +++ b/discord/gateway.py @@ -234,7 +234,7 @@ class DiscordWebSocket(websockets.client.WebSocketClientProtocol): A future to wait for. """ - future = asyncio.Future(loop=self.loop) + future = compat.create_future(self.loop) entry = EventListener(event=event, predicate=predicate, result=result, future=future) self._dispatch_listeners.append(entry) return future diff --git a/discord/state.py b/discord/state.py index 6b6a8fc6e..1a5111618 100644 --- a/discord/state.py +++ b/discord/state.py @@ -739,7 +739,7 @@ class ConnectionState: return Message(state=self, channel=channel, data=data) def receive_chunk(self, guild_id): - future = asyncio.Future(loop=self.loop) + future = compat.create_future(self.loop) listener = Listener(ListenerType.chunk, future, lambda s: s.id == guild_id) self._listeners.append(listener) return future