Async wrapper around :class:Tunnel.
The underlying tunnel runs in background threads (TCP listener + bridges); async context-manager methods delegate to the sync tunnel via the event loop's executor.
Usage::
async with await sandbox.tunnel(remote_port=5432) as t:
conn = await asyncpg.connect(host="127.0.0.1", port=t.local_port)
AsyncTunnel(
self,
dataplane_url: str,
api_key: Optional[str],
remote_port: int,
*,
local_port: int = 0,
max_reconnects: int = 3
)