# types.ConnectedServer.waitFor

- **Module:** types.ConnectedServer
- **Package:** libtmux
- **Language:** TypeScript
- **Kind:** method
- **Source:** https://github.com/libtmux/libtmux-ts/blob/3fe1ca654b81b8cbf4a13b777a001a3298c87a6f/packages/libtmux/src/types.ts#L979
- **Page:** https://libtmux.org/en/ts/latest/reference/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

- `WaitTimeoutError`: when the deadline passes with the condition unmet.
- `LibTmuxError`: 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" }));
```
