Alternatives to await for fetching coroutine objects with PyCall

I am trying to create an OPC UA client by interfacing opcua-asyncio with Julia's PyCall package. opcua-asyncio uses an async/await structure to enable asynchronous communication with a server:

from asyncua import Client

async with Client(url='opc.tcp://localhost:4840/freeopcua/server/') as client:
    while True:
        # Do something with client
        node = client.get_node('i=85')
        value = await node.read_value()

I am not a PyCall expert but as far as I am aware, it is currently not possible to natively use async/await with PyCall. The event-based GUI functionality of PyCall instead seem to use a function named install_doevent() for event polling. If there is no better way, I would like to implement such a polling-based solution as well.

The above example from opcua-asyncio can easily be ported to Julia:

using PyCall

ua = pyimport("asyncua")
url = "opc.tcp://localhost:4840/freeopcua/server/"
client = ua.Client(url)

node = client.get_node("i=85")
value = node.read_value() # Returns: PyObject <coroutine object Node.read_value at 0x7f9ae7fa0ba0>

The last call returns a coroutine PyObject. How can I fetch data from this PyObject?