antiwork/gumroad · warning

Dropped a non-Inertia response to a background content-page

Error message

Dropped a non-Inertia response to a background content-page poll of ${redactUrlForLogging(requestedUrl)} (path redacted on purpose — it is not safe to share). Something between the browser and Gumroad answered the poll with its own page (an edge challenge, a proxy error, a captive portal). The page keeps what it already loaded and the poll keeps retrying; further drops for this page are not logged.

What it means

Not a thrown error — a one-time-per-URL console breadcrumb from warnAboutDroppedPollResponse. The buyer content page's background poll (an Inertia partial reload of audio_durations / latest_media_locations, every few seconds) received a non-Inertia response (no X-Inertia header) from the same URL it requested; the guard decided to drop it instead of navigating, so the page keeps its state and the poll retries. The logged path is redacted to /d/[redacted] because the /d/:token URL is itself the access credential and the warning is expected to be pasted into support tickets.

Source

Thrown at app/javascript/utils/inertia_partial_reload.ts:170

/**
 * Warns once per URL that a background poll response was dropped. Safe to call on every drop.
 * The warning names only the redacted path shape — never the content token or query string.
 *
 * `response` is the same axios response passed to `isUnredirectedDownloadPagePollResponse`.
 */
export const warnAboutDroppedPollResponse = (response: unknown): void => {
  if (!isRecord(response)) return;
  const { config, request } = response;

  // Prefer the URL the browser actually ended on; fall back to the one the request asked for.
  const requestedUrl =
    (isRecord(request) ? stringOrNull(request.responseURL) : null) ??
    (isRecord(config) ? stringOrNull(config.url) : null);
  if (requestedUrl === null || alreadyWarnedUrls.has(requestedUrl)) return;

  alreadyWarnedUrls.add(requestedUrl);
  // eslint-disable-next-line no-console
  console.warn(
    `Dropped a non-Inertia response to a background content-page poll of ${redactUrlForLogging(requestedUrl)} (path redacted on purpose — it is not safe to share). Something between the browser and Gumroad answered the poll with its own page (an edge challenge, a proxy error, a captive portal). The page keeps what it already loaded and the poll keeps retrying; further drops for this page are not logged.`,
  );
};

View on GitHub (pinned to afeacbd394)

Solutions

  1. Treat it as network interception, not an app bug: ask the buyer to switch networks or retry after leaving the captive portal; the poll self-heals when interception ends.
  2. If reproducible on a clean network, capture the actual response body/status in devtools to identify which middlebox is answering.
  3. No page code change is needed — dropping and retrying is the designed recovery; the warning exists only as a diagnostic breadcrumb.
Defensive patterns

Strategy: fallback

Validate before calling

import { isUnredirectedDownloadPagePollResponse, warnAboutDroppedPollResponse } from "@/utils/inertia_partial_reload";

// In the Inertia "invalid" response handler, before navigating:
if (isUnredirectedDownloadPagePollResponse(response)) {
  warnAboutDroppedPollResponse(response); // one-time, redacted breadcrumb
  return; // keep page state; the poll retries on its timer
}
// otherwise navigate as Inertia does by default

Type guard

// Narrows an unknown axios response to a droppable download-page poll
const isUnredirectedDownloadPagePollResponse = (response: unknown): boolean => {
  if (!isRecord(response)) return false;
  const { config } = response;
  if (!isRecord(config)) return false;
  return isGet(config) && isDownloadPagePoll(config) && !wasRedirected(config, (response as { request?: unknown }).request);
};

Prevention

When it happens

Trigger: A network middlebox answers the poll with its own HTML while the buyer is on a /d/:token content page: cloudflare-style edge challenge, ISP or captive-portal interception, corporate proxy error page, or an injected gateway login. The URL is deliberately not safe to print because the token grants file access.

Common situations: Buyers on hotel/airport wifi behind captive portals, VPNs with TLS inspection, regions with DNS-level interception, or transient CDN 502/503 HTML pages during incidents.

Related errors


AI-assisted analysis of antiwork/gumroad@afeacbd394 (2026-08-21). Data as JSON: /api/errors/2239f42b46fe30c9. Report an issue: GitHub.