Fix: allow Tunnel.Close() to be called multiple times without "panic: close of closed channel"