message: If DTR returns a 503 to us, cool down on making further requests for 10 minutes.
diff: @@ -4,6 +4,7 @@ import CircuitBreaker from 'circuit-breaker-js';
  export const dtrTextReviewMultiplier = 10;
  const TIMEOUT = 3000;
  +const HTTP_503_TIMEOUT = 10 * 60 * 1000;
  const circuitBreaker = new CircuitBreaker({
  timeoutDuration: TIMEOUT,
  @@ -11,6 +12,16 @@ const circuitBreaker = new CircuitBreaker({
  volumeThreshold: 2
  });
  +let lastFiveOhThreeCaught: Date | null;
  +
  +function fiveOhThreeCaughtRecently(): boolean {
  + if (!lastFiveOhThreeCaught) {
  + return false;
  + }
  +
  + return Date.now() - lastFiveOhThreeCaught.getTime() <= HTTP_503_TIMEOUT;
  +}
  +
  export function dtrFetch(url: string, body: object) {
  const controller = typeof AbortController === 'function' ? new AbortController() : null;
  const signal = controller && controller.signal;
  @@ -29,10 +40,19 @@ export function dtrFetch(url: string, body: object) {
  }
  return new Promise((resolve, reject) => {
  + if (fiveOhThreeCaughtRecently()) {
  + reject(new Error('Waiting due to HTTP 503'));
  + } else {
  circuitBreaker.run(
  (success, failure) => {
  Promise.resolve(fetch(request, { signal }))
  .then((r) => {
  + if (r.status === 503) {
  + lastFiveOhThreeCaught = new Date();
  + failure();
  + reject(new Error('HTTP 503 returned'));
  + }
  +
  if (controller) {
  clearTimeout(timer);
  }
  @@ -51,5 +71,6 @@ export function dtrFetch(url: string, body: object) {
  },
  () => reject(new Error('Circuit breaker open'))
  );
  + }
  });
  }
  