> Fetch clean Markdown by appending `.md` to any page URL under https://signalwire.com/docs or requesting it with the HTTP header `Accept: text/markdown`. The root index at https://signalwire.com/docs/llms.txt lists the available documentation indexes.

# AuxiliaryLegTimeoutError

> Thrown when an auxiliary leg does not connect within its budget.

An auxiliary leg — a screen share or an additional input device — did not finish connecting within its 15-second budget. The clock starts once local media is in hand, so a slow device picker or an unanswered permission prompt never spends it; only the offer, ICE gathering, invite, answer, and DTLS do.

Typed rather than a bare RxJS `TimeoutError` so the leg and the underlying cause survive.

## **Extends**

* `Error`

## **Constructors**

### Constructor

```ts
new AuxiliaryLegTimeoutError(leg, originalError?): AuxiliaryLegTimeoutError
```

### Parameters

**`leg`** `'main' | 'screenshare' | 'additional-device'` — required

Which auxiliary leg timed out, e.g. `'screenshare'`.

---

**`originalError`** `Error`

The underlying RxJS `TimeoutError`, also set as this error's `cause`.

---

## **Properties**

**`leg`** `'main' | 'screenshare' | 'additional-device'` — required

Read-only. Which auxiliary leg timed out.

---

**`originalError`** `Error`

Read-only. The underlying RxJS `TimeoutError`.

---

## **Examples**

```ts
import { AuxiliaryLegTimeoutError } from '@signalwire/js';

try {
  await call.self.addAdditionalDevice({ video: true });
} catch (error) {
  if (error instanceof AuxiliaryLegTimeoutError) {
    toast(`The ${error.leg} leg could not connect. The call is unaffected.`);
  }
}
```

## **See**

* [`AuxiliaryLegCancelledError`](/docs/browser-sdk/v4/reference/errors/auxiliary-leg-cancelled-error) — the leg was removed before it connected.
* [`addAdditionalDevice`](/docs/browser-sdk/v4/reference/self-participant/add-additional-device).