Skip to main content
zerotal

Documentation


Documentation / zerotal / index / RequestContext

Class: RequestContext

Defined in: packages/core/src/context/RequestContext.ts:29

Static accessor for the request-scoped HttpContext stored in AsyncLocalStorage.

Remarks

A boundary is opened once per request via RequestContext.run (in the Bun.serve() fetch handler). Inside it, any code — however deeply nested — reaches the current request with RequestContext.get (throws off-request) or RequestContext.tryGet (returns undefined off-request).

Example

const ctx = RequestContext.tryGet();
if (ctx) console.log(`handling ${ctx.request.url}`);

Constructors

Constructor

new RequestContext(): RequestContext

Returns

RequestContext

Methods

run()

static run<T>(ctx, callback): T

Defined in: packages/core/src/context/RequestContext.ts:42

Establish a per-request ALS boundary.

MUST be called at the very top of the Bun.serve() fetch handler — synchronously, before any await — to avoid the Bun #24199 edge case where ALS context is lost if await happens before run() is called.

The callback runs inside the boundary. Everything called from within the callback (including deeply nested async code) can access ctx via RequestContext.get() with no argument passing.

Type Parameters

T

T

Parameters

ctx

HttpContext

callback

() => T

Returns

T


get()

static get(): HttpContext

Defined in: packages/core/src/context/RequestContext.ts:53

Returns the current HttpContext. Throws if called outside a request.

Returns

HttpContext

Throws

When called outside a request boundary opened by RequestContext.run.


tryGet()

static tryGet(): HttpContext<Record<string, string>> | undefined

Defined in: packages/core/src/context/RequestContext.ts:64

Returns the current HttpContext or undefined. Use this for code that runs in both request and non-request contexts (CLI commands, queue workers, scheduled jobs).

Returns

HttpContext<Record<string, string>> | undefined


request()

static request(): Request

Defined in: packages/core/src/context/RequestContext.ts:71

The current request. Throws if called outside a request.

Returns

Request


requestId()

static requestId(): string

Defined in: packages/core/src/context/RequestContext.ts:75

The current request's unique id. Throws if called outside a request.

Returns

string


took()

static took(): number

Defined in: packages/core/src/context/RequestContext.ts:79

Elapsed milliseconds since the current request started. Throws if outside a request.

Returns

number


locale()

static locale(): string

Defined in: packages/core/src/context/RequestContext.ts:83

The current request's locale, defaulting to "en". Throws if outside a request.

Returns

string


transaction()

static transaction(): TransactionContext | undefined

Defined in: packages/core/src/context/RequestContext.ts:88

The active database transaction for the current request, or undefined.

Returns

TransactionContext | undefined