# TSR1002: 'void' discards a promise that can reject. Attach '.catch' first: 'void ….catch(...)'.

> 'void' discards a promise that can still reject. Attach a handler first: void p.catch(...).

## What it means

`void p` hides a promise from the type checker but not its rejection. In sound and strict files `void` is allowed only on a handled chain.

## Example

```ts
// void hides the promise but not its rejection.
async function save(x: string): Promise<void> {
  console.log(x);
}
void save("a"); // @expect TSR1002
export {};
```

## How to fix

- Handle the rejection before discarding: `void save(user).catch(report)`.
- Or `await` the promise.

Sound mode is defined in [design record 0007](https://github.com/Webb-Ventures/typescript-rust/blob/main/docs/design/0007-sound-mode.md) (accepted 2026-10-15).

Source: https://ts-r.dev/errors/TSR1002/
