Renew before expiry

Refresh a token, lease, or session a few minutes before it expires.

Use this to
  • Refresh an OAuth access token 5 minutes before it expires
  • Renew a distributed lock 30 seconds before its TTL expires
  • Re-sign a presigned upload URL ahead of its expiration
  • Refresh an external API session token every 50 minutes to prevent timeout
Code
Schedule the first renewal
// token is good for 60 minutes — renew at the 55-minute mark
await dk.schedule("refresh-token", {
  key: "acct_456",
  delay: "55m",
});
When the time comes, refresh and reschedule
dk.handle("refresh-token", async ({ key }) => {
  const next = await oauth.refresh(key);
  await db.tokens.update(key, next);

  // queue the next renewal — one job per account, always
  await dk.schedule("refresh-token", {
    key,
    delay: "55m",
  });
});
npm install delaykit