We use cookies to enhance user experience, personalize content, and analyze traffic. Cookie Policy

← Back to all articles

Error 1101: Cloudflare Worker Threw Exception Fix

Cloudflare error 1101 means a Worker threw an uncaught JavaScript exception. Find the real error with wrangler tail and Workers Logs, then fix it.

by Unknown Proxies

8 min read

May 24, 2026

Updated October 4, 2026

Error 1101: Cloudflare Worker Threw Exception Fix

Error 1101 "Worker threw exception" is a Cloudflare Workers error. The site runs code on Cloudflare's network (a Worker), and that code crashed while it handled your request. Cloudflare shows the 1101 page because the Worker never produced a valid response.

The error page does not tell you what went wrong. Only the Worker's logs show the real exception. This guide covers what visitors can do, how developers find the exception, and the causes we see most often.

Diagram showing Cloudflare Error 1101 when a Worker throws an exception

Not a Cloudflare page? Other "error 1101" messages

The number 1101 also appears in tools that have nothing to do with Cloudflare. If your screen does not show a Cloudflare error page with a Ray ID, this guide does not apply.

Error 1101 quick fix

If you see 1101 on someone else's site

You cannot fix it from your browser. The site's code failed on Cloudflare's servers, so changing browsers, clearing cookies, or switching networks does not help.

  1. Reload once. Some exceptions only happen on certain requests.
  2. Try a different page on the same site.
  3. Wait and try later. The owner has to fix and redeploy the code.
  4. Report the URL, the time, and the Ray ID from the error page to the site owner.

This is what people see on tools such as Path of Building paste sites (searches like "pobb error 1101"). It is the site's Worker failing, not your build link or your account.

If you own the Worker

  1. Stream live errors with npx wrangler tail <worker-name> --format pretty --status error and reload the failing URL.
  2. Read the exception name, message, and stack trace in the output.
  3. If the error started after a deploy, roll back to the last working version in the dashboard or with npx wrangler rollback.
  4. Fix the code path, then add a try/catch so future failures return a controlled response.

What does "Worker threw exception" mean?

Cloudflare's Workers documentation defines error 1101 as "Worker threw a JavaScript exception." The request path is:

  1. A visitor requests a URL that matches a Worker route.
  2. Cloudflare runs the Worker at the edge.
  3. The Worker throws an error that nothing catches, or its promise rejects.
  4. Cloudflare returns the 1101 page instead of a response from your code.

The same 1101 page also appears when the runtime decides the Worker will never respond. The runtime reports this as "The script will never generate a response". It happens when all the code for a request has finished, nothing is left in the event loop, and the handler still has not returned a Response.

Your origin server is not involved in 1101. The failure is in the Worker code or its configuration.

How to find the real exception

Use wrangler tail

wrangler tail streams logs from the deployed Worker in real time:

npx wrangler tail <worker-name> --format pretty --status error

Reload the failing URL while the command runs. The output shows the exception message, the stack, and any console.log output from that request. In JSON format (the default), the details are in the exceptions array.

Use --env production if the Worker is deployed to a named Wrangler environment.

Turn on Workers Logs

wrangler tail only shows live traffic. To search past errors, enable Workers Logs in your Wrangler config and redeploy:

# wrangler.toml
[observability]
enabled = true
// wrangler.jsonc
{
  "observability": { "enabled": true }
}

Then open Workers & Pages, select the Worker, and open its logs. Filter with $workers.outcome = "exception" to list only failed invocations. The Worker's metrics page also splits errors into "Uncaught Exception", "Exceeded CPU Time Limits", and "Exceeded Memory", which tells you whether you have a 1101 or a resource problem.

Reproduce it locally

Run the Worker locally and send the same request:

npx wrangler dev
curl -i "http://localhost:8787/the/failing/path?same=params"

If it works locally but fails in production, the difference is usually configuration: bindings, secrets, or environment-specific settings. npx wrangler dev --remote runs against Cloudflare's network with the deployed bindings, which often reproduces the production error.

Catch errors at the top of the handler

A top-level try/catch turns a blank 1101 page into a logged error and a controlled response:

export default {
  async fetch(request, env, ctx) {
    try {
      return await handle(request, env, ctx);
    } catch (err) {
      console.error("Unhandled error", request.url, err && err.stack);
      return new Response("Internal error", { status: 500 });
    }
  },
};

Note the await. Without it, a rejected promise from handle() escapes the try block and still produces 1101.

Common causes of error 1101

Cause Typical message in logs Fix
Missing binding in this environment TypeError: Cannot read properties of undefined (reading 'get') Add the KV, R2, D1, or service binding under the right [env.<name>] section. Wrangler does not copy bindings from the top level into named environments
Missing secret or variable undefined value used as a string or URL Set it with npx wrangler secret put NAME for each environment
Unhandled promise rejection Error from fetch(), JSON parsing, or a storage call with no handler await the call inside try/catch, and handle non-OK responses
Handler returns nothing "The script will never generate a response" Return a Response from every branch. Do not leave a promise that never resolves
Bad input SyntaxError: Unexpected token from request.json() Check request.method and Content-Type, then parse inside try/catch
Shared state across requests Cannot perform I/O on behalf of a different request Do not store request-bound objects (streams, responses, sockets) in global scope
Module fails at startup ImportError or ReferenceError at module load Every request fails until you fix the import. See the Python note below

Python Workers import errors

Python Workers fail with 1101 on every request if a module throws at import time. One public example is the workers-py issue about importing asgi. The deployed Worker threw ImportError: cannot import name 'wait_until' from 'workers', while pywrangler dev worked locally. The reporter's workaround was to remove the import asgi line. If your Python Worker fails on every request right after a deploy or a runtime change, read the first exception in wrangler tail and check the imports it names.

Framework apps on Workers

Next.js, Remix, Astro, SvelteKit, and other framework adapters run your server code inside a Worker. A crash in a server route or loader shows up as 1101. The fix is the same: tail the Worker and read the stack trace. The trace points to the framework's bundled file, so enable source maps (upload_source_maps = true in wrangler.toml) to see your original file names.

Error 1101 vs. 1102, 1027, and 520

Error What happened Where to look
Error 1101 The Worker threw an uncaught exception or never returned a response Worker logs, code, bindings
Error 1102 The Worker exceeded its CPU time limit or its 128 MB memory limit CPU-heavy loops, large JSON parsing, buffering large bodies
Error 1027 The Worker hit the free plan's daily request limit Plan usage, or upgrade to Workers Paid
Error 520 The origin server returned an empty or invalid response, with no Worker failure Origin server logs and response headers

The 1101 vs. 1102 difference matters. Exceeding the CPU limit is not an exception in your code, so a try/catch will not stop it. For 1102, reduce work per request: stream large bodies with TransformStream instead of buffering them, cache results, and split large jobs. On the Workers Paid plan you can also raise the CPU limit.

Can proxies fix error 1101?

No. Error 1101 is a code failure on the site's side. A new IP, a VPN, or a proxy reaches the same broken Worker.

If a scraper or monitor sees 1101 on a target, log it as a target-side outage, back off, and retry later. Treat it differently from blocks like Cloudflare Error 1020, where your request was refused on purpose.

How to prevent error 1101

Debugging loop for Cloudflare Error 1101 Worker exceptions

FAQ

What is error 1101?

Error 1101 is a Cloudflare error page. It means the site's Cloudflare Worker threw a JavaScript exception, or finished without returning a response, while it handled your request.

What does "Worker threw exception" mean?

It means code running on Cloudflare Workers crashed with an error that nothing caught. The page is generic. The actual error message is only in the Worker's logs.

Is error 1101 my fault as a visitor?

No. Your request reached Cloudflare, and the site's code failed. Only the site owner can fix it.

How do I fix error 1101 worker threw exception?

Run npx wrangler tail <worker-name> --status error, reproduce the request, and read the exception. Fix that code path, check bindings and secrets for the environment, and add a top-level try/catch. If a deploy caused it, roll back first.

Why does my Worker work in wrangler dev but throw 1101 in production?

Usually because production uses a different Wrangler environment with missing bindings or secrets. Runtime differences can also matter, as in the Python Workers import case above. Try npx wrangler dev --remote to run with the deployed configuration.

Is error 1101 the same as error 1102?

No. Error 1101 is an exception or missing response. Error 1102 means the Worker exceeded its CPU time or memory limit.

Final thoughts

The 1101 page hides the real error, so everything starts with the logs. Tail the Worker, read the stack trace, and fix that exact path. Then add a top-level try/catch and Workers Logs so the next failure is easy to find.

Technical references: Cloudflare Workers errors and exceptions, Cloudflare error 1101, and Cloudflare error 1102.

About the Author

Unknown Proxies

Proxy Infrastructure Team

Stay Unknown

High-performance dedicated proxies optimized for speed and reliability. Get uncompromising quality, 99.9% uptime, and unmatched support. Stay Unknown.

Explore Plans