Zerowidth CleanerMeasured guides

CLAUDE WATERMARK REMOVER · DESTINATION TEST

Why does Promise.resolve return text instead of my review object?

A callable then property is invoked, and its resolved value becomes the result.

Tested 8 November 2026 · Synthetic fixtures · Minimal DOM

What the test establishes

The review object has both a text field and a callable then field. Promise resolution treats that shape as a thenable and asks it to resolve. The observation captures the returned string and the call count, making the conversion explicit. If a data schema permits arbitrary method names, wrapping an object in Promise.resolve may have behavior beyond simply storing the object. This fixture constructs the method locally and gives it no side effects except the counter. It does not demonstrate an external attack. The cleaner returns a primitive string, and the harness adds the thenable wrapper only afterwards to isolate the destination contract.

Reproduce the observation

Save tested-app.js and reproduce.cjs together, then run node reproduce.cjs. Compare its output with the recorded observation. The harness executes the actual homepage callback in a minimal DOM and records its resulting field values and method calls. Destination operations run in Node.js; the homepage DOM is a controlled substitute. Runtime: v24.22.1. No submitted text or genuine Claude output is used.

{
  "resolved": "AB",
  "calls": 1
}

Capability boundary

One trusted synchronous thenable is measured. Untrusted methods and recursive thenables are excluded.

This Claude watermark remover edits a small selected character set. These callback observations do not establish authorship, detector scores, statistical-watermark removal or end-to-end browser behavior. For real work, keep the original and compare the exact result at its destination.

Primary material and next step

The tested first-party source snapshot and complete harness are the primary material for this page. For broader scope, read invisible Unicode versus AI watermarks, or return to the cleaner.