dial
Places an outbound call to the given destination.
Waits for authentication before dialing. Media options are merged from
saved preferences, destination query parameters (e.g. ?channel=video),
and the provided options (highest priority).
Returns a Call in 'ringing' state. Subscribe to Call.status$
to track progression through 'connected' → 'disconnected'.
Local media acquisition is deliberately unbounded: a permission prompt or a device picker is human time, and an unanswered prompt leaves this promise pending indefinitely. Apply your own bound if your UI needs one. The 12-second signaling budget starts only once acquisition settles, and must cover ICE gathering and the invite RPC.
If the invite is refused because the session token went stale — a refresh timer throttled by a backgrounded tab, for instance — the SDK re-mints the credential, reauthenticates the live session, and retries the dial once before giving up.
Parameters
destination
Address URI string (e.g. '/public/my-room') or Address instance.
options
Media and dial options (audio/video, device constraints). Overrides defaults. See DialOptions.
Returns
Promise<Call>
The created Call instance.
Throws
If authentication is not complete, or if call creation fails and the credential recovery retry also fails. A MediaAccessError is only fatal when the call cannot fall back to receive-only — see fallbackToReceiveOnly.