- Sound mode S-10, pre-alpha
- Design record 0007, Accepted
TSR1001
Promise from '{0}' is not handled. Await it, return it, or attach '.catch'.
A promise is dropped without await, return or a rejection handler, so a rejection would go unhandled. Await it, return it or add .catch.
Rule S-10: No floating promises (level: strict). Reported by ts-r-check and ts-r-lsp in files that opt in to sound mode. See Sound mode.
What it means
In sound and strict files an expression statement whose value is promise-like (or an array of them) must be awaited, returned or handled with .catch(h) or .then(f, h). .then(f) without a rejection handler, or .finally alone, still floats.
Example
// The promise is dropped; a rejection would be unhandled.
async function save(x: string): Promise<void> {
console.log(x);
}
save("a"); // @expect TSR1001
export {};
How to fix
awaitit in an async function, orreturnit.- Attach a rejection handler:
save(user).catch(report)or.then(log, report). - For arrays of promises,
await Promise.all(...).
Sound mode is defined in design record 0007 (accepted 2026-10-15).