It didn't fail. My tests confirmed the issue: there is some "black hole" in routing/BGP between my ISP and Fastly, specifically for IPv6.
Let me try to explain this for you guys. From my OpenWrt box, I see the following behavior for IPv4:
root@OpenWrt:~# dig A downloads.openwrt.org AAAA downloads.openwrt.org +short
;; Warning, extra type option
dualstack.j.sni.global.fastly.net.
2a04:4e42:4::644
dualstack.j.sni.global.fastly.net.
151.101.18.132
root@OpenWrt:~# telnet 151.101.18.132 443
Trying 151.101.18.132...
Connected to 151.101.18.132.
Escape character is '^]'.
Running this command in parallel confirms I have opened a TCP connection (take note of ESTABLISHED) to downloads.openwrt.org via IPv4:
root@OpenWrt:~# netstat -nap | grep telnet
tcp 0 0 99.96.XXX.XXX:33208 151.101.18.132:443 ESTABLISHED 24956/telnet
Note: With telnet I am only testing if a proper TCP handshake can be established to the host, but this confirms end-to-end connectivity.
Conversely, doing the same test with IPv6 looks like this:
root@OpenWrt:~# dig A downloads.openwrt.org AAAA downloads.openwrt.org +short
;; Warning, extra type option
dualstack.j.sni.global.fastly.net.
2a04:4e42:4::644
dualstack.j.sni.global.fastly.net.
151.101.18.132
root@OpenWrt:~# telnet 2a04:4e42:4::644 443
Trying 2a04:4e42:4::644...
But it never connects. This command in parallel shows SYN_SENT, but I never get the ACK from the IPv6 endpoint:
root@OpenWrt:~# netstat -nap | grep telnet
tcp 0 1 2001:506:70XX:XXXX::1:53764 2a04:4e42:4::644:443 SYN_SENT 3736/telnet
Now, to prove this can and does work, let's do the same with Google.com, a well-known service:
root@OpenWrt:~# dig A google.com AAAA google.com +short
;; Warning, extra type option
2607:f8b0:4004:c08::65
2607:f8b0:4004:c08::71
2607:f8b0:4004:c08::8b
2607:f8b0:4004:c08::64
172.253.63.101
172.253.63.113
172.253.63.138
172.253.63.139
172.253.63.102
172.253.63.100
root@OpenWrt:~# telnet 172.253.63.101 443
Trying 172.253.63.101...
Connected to 172.253.63.101.
Escape character is '^]'.
Connection closed by foreign host.
root@OpenWrt:~# telnet 2607:f8b0:4004:c08::65 443
Trying 2607:f8b0:4004:c08::65...
Connected to 2607:f8b0:4004:c08::65.
Escape character is '^]'.
Connection closed by foreign host.
root@OpenWrt:~# netstat -nap | grep telnet
tcp 0 0 99.96.XXX.XXX:56656 172.253.63.101:443 ESTABLISHED 8253/telnet
root@OpenWrt:~# netstat -nap | grep telnet
tcp 0 0 2600:1700:XXX:XXXX::5:34434 2607:f8b0:4004:c08::65:443 ESTABLISHED 8460/telnet
This indicates successfully negotiating a functional TCP connection to google.com via both IPv4 and IPv6. If I were to try to communicate over that established TCP connection, then that is where TLS negotiation would need to be performed next. But at a very basic level, this confirms whether a TCP connection can, or cannot, be established to a port on a remote host.