@@ -29,7 +29,6 @@ import {
29
29
type Tracer ,
30
30
} from '@opentelemetry/api' ;
31
31
import '@opentelemetry/api' ;
32
- import { AsyncLocalStorageContextManager } from '@opentelemetry/context-async-hooks' ;
33
32
import { Resource } from '@opentelemetry/resources' ;
34
33
import { type SpanProcessor } from '@opentelemetry/sdk-trace-base' ;
35
34
import { WebTracerProvider } from '@opentelemetry/sdk-trace-web' ;
@@ -259,17 +258,23 @@ export function useOpenTelemetry(
259
258
asyncAttributes ,
260
259
) ;
261
260
261
+ const contextManager$ =
262
+ options . contextManager != undefined
263
+ ? options . contextManager
264
+ : import ( '@opentelemetry/context-async-hooks' ) . then (
265
+ ( module ) => new module . AsyncLocalStorageContextManager ( ) ,
266
+ ) ;
267
+
262
268
preparation$ = mapMaybePromise ( exporters$ , ( exporters ) => {
263
269
spanProcessors = exporters ;
264
270
provider = new WebTracerProvider ( { resource, spanProcessors } ) ;
265
- provider . register ( {
266
- contextManager :
267
- options . contextManager === false
268
- ? undefined
269
- : ( options . contextManager ?? new AsyncLocalStorageContextManager ( ) ) ,
271
+ return mapMaybePromise ( contextManager$ , ( contextManager ) => {
272
+ provider . register ( {
273
+ contextManager : contextManager === false ? undefined : contextManager ,
274
+ } ) ;
275
+ tracer = options . tracer || trace . getTracer ( 'gateway' ) ;
276
+ preparation$ = undefined ;
270
277
} ) ;
271
- tracer = options . tracer || trace . getTracer ( 'gateway' ) ;
272
- preparation$ = undefined ;
273
278
} ) ;
274
279
} else {
275
280
tracer = options . tracer || trace . getTracer ( 'gateway' ) ;
0 commit comments