MCPcopy Create free account
hub / github.com/CreminiAI/skillpack / sendWithRetry

Method sendWithRetry

src/runtime/adapters/slack.ts:555–590  ·  view source on GitHub ↗
(
    client: any,
    route: SlackRoute,
    text: string,
    maxRetries = 3,
  )

Source from the content-addressed store, hash-verified

553 }
554
555 private async sendWithRetry(
556 client: any,
557 route: SlackRoute,
558 text: string,
559 maxRetries = 3,
560 ): Promise<SlackPostedMessage> {
561 for (let attempt = 0; attempt <= maxRetries; attempt++) {
562 try {
563 const response = await client.chat.postMessage({
564 channel: route.channel,
565 text: formatSlackMessage(text),
566 mrkdwn: true,
567 thread_ts: route.threadTs,
568 reply_broadcast: false,
569 });
570 if (typeof response.ts !== "string") {
571 throw new Error("Slack postMessage response missing ts");
572 }
573 return { ts: response.ts };
574 } catch (err: any) {
575 const retryAfter = this.getRetryAfterSeconds(err);
576 if (retryAfter && attempt < maxRetries) {
577 console.log(
578 `[Slack] Rate limited, retrying after ${retryAfter}s...`,
579 );
580 await new Promise((resolve) =>
581 setTimeout(resolve, retryAfter * 1000),
582 );
583 continue;
584 }
585 throw err;
586 }
587 }
588
589 throw new Error("Slack postMessage failed after retries");
590 }
591
592 private async updateMessageSafe(
593 client: any,

Callers 3

sendLongMessageMethod · 0.95
sendSafeMethod · 0.95

Calls 2

getRetryAfterSecondsMethod · 0.95
formatSlackMessageFunction · 0.85

Tested by

no test coverage detected