@@ -44,14 +44,16 @@ export function getDefaultIntegrations(options: Options): Integration[] {
4444
4545/**
4646 * When the app opted into diagnostics-channel injection (via
47- * `experimentalUseDiagnosticsChannelInjection()`) AND span recording is enabled, swap the
48- * channel-based integrations in place of their OTel equivalents so the two don't both instrument the
49- * same library. Otherwise returns `integrations` unchanged.
47+ * `experimentalUseDiagnosticsChannelInjection()`) AND span recording is enabled, drop the OTel
48+ * integrations that have a channel-based replacement and append the FULL channel-integration set,
49+ * so the two never both instrument the same library. Otherwise returns `integrations` unchanged.
5050 *
51- * Every channel-based integration we ship today is a 1:1 replacement for an OTel performance/tracing
52- * integration and produces nothing but spans, so this is gated on span recording. Exported so SDKs
53- * that build their own default-integration set (e.g. `@sentry/aws-serverless`) can apply the same
54- * swap instead of duplicating this logic.
51+ * Note the asymmetry: appended channel integrations are not limited to ones whose OTel counterpart
52+ * was in `integrations`. For `@sentry/node` that makes no difference (the incoming list carries the
53+ * whole OTel performance set), but a caller with a narrower list (e.g. `@sentry/aws-serverless`)
54+ * gains channel coverage for libraries it never shipped OTel integrations for. Channel integrations
55+ * produce nothing but spans, so this is gated on span recording. Exported so SDKs that build their
56+ * own default-integration set can apply the same logic instead of duplicating it.
5557 */
5658export function applyDiagnosticsChannelInjectionIntegrations (
5759 integrations : Integration [ ] ,
0 commit comments