function fail_tunnel() {

            // Get next tunnel
            var next_tunnel = tunnels.shift();

            // If there IS a next tunnel, try using it.
            if (next_tunnel) {
                tunnel.onerror = null;
                tunnel.oninstruction = null;
                tunnel.onstatechange = null;
                attach(next_tunnel);
            }

            return next_tunnel;

        }
Fails the currently-attached tunnel, attaching a new tunnel if
possible.

@private
@return {Guacamole.Tunnel} The next tunnel, or null if there are no
                           more tunnels to try.