diff --git a/agenda/__init__.py b/agenda/__init__.py
index 2ce3e87..bc5d6cf 100644
--- a/agenda/__init__.py
+++ b/agenda/__init__.py
@@ -13,10 +13,10 @@ import dateutil.parser
 import dateutil.tz
 import exchange_calendars
 import holidays
+import httpx
 import lxml
 import pandas
 import pytz
-import requests
 import yaml
 from dateutil.easter import easter
 from dateutil.relativedelta import FR, relativedelta
@@ -116,13 +116,14 @@ def get_next_timezone_transition(from_dt: datetime, tz_name: str) -> date:
     return typing.cast(date, dt.date())
 
 
-def get_next_bank_holiday(input_date: date) -> list[Event]:
+async def get_next_bank_holiday(input_date: date) -> list[Event]:
     """Date and name of the next UK bank holiday."""
     url = "https://www.gov.uk/bank-holidays.json"
     filename = os.path.join(data_dir, "bank-holidays.json")
     mtime = os.path.getmtime(filename)
     if (unixtime() - mtime) > 3600:  # one hour
-        r = requests.get(url)
+        async with httpx.AsyncClient() as client:
+            r = await client.get(url)
         open(filename, "w").write(r.text)
 
     year_later = input_date + timedelta(days=365)
@@ -296,16 +297,21 @@ async def get_data(now: datetime) -> typing.Mapping[str, str | object]:
     last_week = today - timedelta(weeks=1)
     last_year = today - timedelta(days=365)
 
-    gbpusd, gwr_advance_tickets = await asyncio.gather(
+    (
+        gbpusd,
+        gwr_advance_tickets,
+        bank_holiday,
+    ) = await asyncio.gather(
         fx.get_gbpusd(config),
         gwr.advance_ticket_date(data_dir),
+        get_next_bank_holiday(today),
     )
 
     reply = {
         "now": now,
         "gbpusd": gbpusd,
         "next_economist": economist.next_pub_date(today),
-        "bank_holiday": get_next_bank_holiday(today),
+        "bank_holiday": bank_holiday,
         "us_holiday": get_us_holidays(today),
         "next_us_presidential_election": next_us_presidential_election,
         "stock_markets": stock_markets(),