---
url: https://scruple.dev/rules/async/no-async-initialization.md
description: Disallow async work hidden in initialization.
---

# async/no-async-initialization

Disallow async work hidden in initialization.

## What it checks

Constructors should not start asynchronous work before callers have an explicit lifecycle boundary that can observe readiness or failure.

## Rule metadata

* Package: `@scruple/async`
* Category: Async lifecycle
* Tags: constructors, initialization, promises
* Default threshold: `plugin default`
* Minimum confidence: `plugin default`

## Examples

### Reported

```ts
class Client { constructor() { void this.connect(); } }
```

### Accepted

```ts
class Client { static async create() { const client = new Client(); await client.connect(); return client; } }
```
