The issue here is that you're essentially doing a bulk data download of annotation for the entire genome. The Ensembl BioMart service isn't really designed for that, it's more aimed at asking for additional data points on a "small" set of genes or transcripts. Hence you hit a timeout limit when asking for too much information. I can't see a difference between the query that works and that which fails, but I guess the working implementation was querying the current version of Ensembl rather than an archive. I suspect it works because you get slightly better performance out of the main site and it manages to return you a result before the 5 minute limit is reached.
If you really want whole genome data you're probably better off trying to download the annotation from the Ensembl FTP (http://www.ensembl.org/info/data/ftp/index.html/) and working with those files locally or using a genome annotation package for example ensembldb.
That said, you can "trick" biomaRt into helping with this by first asking for all possible gene ids. Then provide these as a filter and biomaRt will break your query down into several smaller parts, each of which works within the timelimit, and then stitches the results back into a single table for you e.g.
ensembl <- useEnsembl("genes", "hsapiens_gene_ensembl", version=105)
gene_ids <- getBM(attributes = c("ensembl_gene_id"), mart = ensembl)
all_data <- getBM(attributes = c("ensembl_transcript_id", "ensembl_gene_id", "transcript_tsl"),
filters = "ensembl_gene_id",
values = gene_ids,
mart = ensembl)
#> ensembl_transcript_id ensembl_gene_id transcript_tsl
#> 1 ENST00000469599 ENSG00000012817 tsl2
#> 2 ENST00000317961 ENSG00000012817 tsl1 (assigned to previous version 8)
#> 3 ENST00000541639 ENSG00000012817 tsl1
#> 4 ENST00000382806 ENSG00000012817 tsl1
#> 5 ENST00000492117 ENSG00000012817 tsl2
#> 6 ENST00000440077 ENSG00000012817 tsl5
#>  266615 3