# types.ConnectedServer.waitFor

- **Module:** types.ConnectedServer
- **Package:** @libtmux/libtmux
- **Language:** TypeScript
- **Kind:** method
- **Source:** https://github.com/libtmux/libtmux-ts/blob/2cb93308200da38a26b59876618116850f110607/packages/libtmux/src/types.ts#L919
- **Page:** https://libtmux.org/reference/ts/types-connectedserver-waitfor/

```
types.ConnectedServer.waitFor(matches: : (snapshot: ServerSnapshot) => boolean, options: : WaitForOptions) -> Promise<ServerSnapshot>
```

Resolve once the server satisfies `matches`, or reject on timeout.

This is the join between a snapshot and the stream: it subscribes first,
then reads, so a change landing between those two steps is still seen.
Doing it the other way round — read, then subscribe — waits forever on a
condition that already came true. Notifications trigger immediate reads;
bounded polling covers state changes tmux does not announce. An unannounced
transition must persist until a sample to be observable.

## Raises

- `WaitTimeout` — when the deadline passes with the condition unmet.
- `LibTmuxException` — when the connection ends first, which says nothing about the condition and so is not the same answer.

## Example

```ts
await live.waitFor((server) => server.windows.exists({ name: "build" }));
```
