Severity: warning
Category: lint
Stage: Stage 3
Description
A Promise-typed expression is used as a standalone statement without being awaited,
returned, assigned, or otherwise consumed. Fire-and-forget async work hides failures and races
shutdown.
This rule is type-aware: the linter checks the synthesized type at each expression statement.
Example
// ✗ lint warning
export async function run(): Promise<void> {
fetchData() // SJS-L015 — Promise ignored
}Fix
Await, return, or explicitly handle the promise:
// ✓ correct
export async function run(): Promise<void> {
await fetchData()
}
// ✓ correct — intentional fire-and-forget with handler
void fetchData().catch((e) => console.error(e))Configuration
{
"lint": {
"L015": "error" | "warn" | "off"
}
}Default: "warn" in standard mode, "error" in --strict mode.
Related codes
SJS-L016— unhandledResultSJS-L017— preferResultoverthrow