Skip to content

Error Handling

drrobl0xx edited this page Jul 28, 2026 · 2 revisions

Error Handling

All three packages expose the same three error classes.


Error classes

Class When thrown Key properties
JokelboardError Any non-2xx response status, code, message
RateLimitError HTTP 429 retryAfter (seconds)
RevisionConflictError HTTP 409 (conflict) currentRevision

RateLimitError and RevisionConflictError both extend JokelboardError.


JavaScript

import { JokelboardClient, JokelboardError, RateLimitError, RevisionConflictError } from '@yeetgodpro1324/jokelboard-js';

const client = new JokelboardClient({ token: process.env.JOKELBOARD_TOKEN });

try {
  await client.createCard('board-id', 'list-id', 'My card');
} catch (err) {
  if (err instanceof RateLimitError) {
    console.error(`Rate limited — retry in ${err.retryAfter}s`);
  } else if (err instanceof RevisionConflictError) {
    console.error(`Conflict — current revision: ${err.currentRevision}`);
  } else if (err instanceof JokelboardError) {
    console.error(`${err.code} (${err.status}): ${err.message}`);
  }
}

Auto-retry on 429 is enabled by default (retryOnRateLimit: true, up to maxRetries: 3).


TypeScript

import { JokelboardClient, JokelboardError, RateLimitError, RevisionConflictError } from '@yeetgodpro1324/jokelboard-ts';

const client = new JokelboardClient({ token: process.env.JOKELBOARD_TOKEN });

try {
  await client.createCard('board-id', 'list-id', 'My card');
} catch (err) {
  if (err instanceof RateLimitError) {
    console.error(`Rate limited — retry in ${err.retryAfter}s`);
  } else if (err instanceof RevisionConflictError) {
    console.error(`Conflict — current revision: ${err.currentRevision}`);
  } else if (err instanceof JokelboardError) {
    console.error(`${err.code} (${err.status}): ${err.message}`);
  }
}

Python

from jokelboard import JokelboardClient, JokelboardError, RateLimitError, RevisionConflictError

with JokelboardClient(token="jkb_...") as client:
    try:
        client.create_card("board-id", "list-id", "My card")
    except RateLimitError as e:
        print(f"Rate limited — retry in {e.retry_after}s")
    except RevisionConflictError as e:
        print(f"Conflict — current revision: {e.current_revision}")
    except JokelboardError as e:
        print(f"{e.code} ({e.status}): {e}")

Auto-retry on 429 is enabled by default (retry_on_rate_limit=True, up to max_retries=3).


Disabling auto-retry

JavaScript / TypeScript

const client = new JokelboardClient({
  token: process.env.JOKELBOARD_TOKEN,
  retryOnRateLimit: false,
});

Python

client = JokelboardClient(token="jkb_...", retry_on_rate_limit=False)

Clone this wiki locally