@effect/opentelemetry 0.56.1 → 0.56.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -25,17 +25,13 @@ const policy = /*#__PURE__*/Schedule.forever.pipe(Schedule.passthrough, /*#__PUR
25
25
  }));
26
26
  /** @internal */
27
27
  const make = exports.make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
28
+ const clock = yield* Effect.clock;
28
29
  const scope = yield* Effect.scope;
29
30
  const exportInterval = Duration.decode(options.exportInterval);
30
- const client = HttpClient.filterStatusOk(yield* HttpClient.HttpClient).pipe(HttpClient.tapError(error => {
31
- if (error._tag !== "ResponseError" || error.response.status !== 429) {
32
- return Effect.void;
33
- }
34
- const retryAfter = error.response.headers["retry-after"];
35
- const retryAfterSeconds = retryAfter ? parseInt(retryAfter, 10) : 5;
36
- return Effect.sleep(Duration.seconds(retryAfterSeconds));
37
- }), HttpClient.retryTransient({
38
- schedule: policy
31
+ let disabledUntil = undefined;
32
+ const client = HttpClient.filterStatusOk(yield* HttpClient.HttpClient).pipe(HttpClient.retryTransient({
33
+ schedule: policy,
34
+ times: 3
39
35
  }));
40
36
  let headers = Headers.unsafeFromRecord({
41
37
  "user-agent": `effect-opentelemetry-${options.label}/0.0.0`
@@ -48,6 +44,11 @@ const make = exports.make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
48
44
  });
49
45
  let buffer = [];
50
46
  const runExport = Effect.suspend(() => {
47
+ if (disabledUntil !== undefined && clock.unsafeCurrentTimeMillis() < disabledUntil) {
48
+ return Effect.void;
49
+ } else if (disabledUntil !== undefined) {
50
+ disabledUntil = undefined;
51
+ }
51
52
  const items = buffer;
52
53
  if (options.maxBatchSize !== "disabled") {
53
54
  if (buffer.length === 0) {
@@ -56,20 +57,20 @@ const make = exports.make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
56
57
  buffer = [];
57
58
  }
58
59
  return client.execute(HttpClientRequest.bodyUnsafeJson(request, options.body(items))).pipe(Effect.asVoid, Effect.withTracerEnabled(false));
59
- });
60
+ }).pipe(Effect.catchAllCause(cause => {
61
+ if (disabledUntil !== undefined) return Effect.void;
62
+ disabledUntil = clock.unsafeCurrentTimeMillis() + Duration.toMillis("1 minute");
63
+ return Effect.logDebug(`Disabling ${options.label} for 60 seconds`, cause);
64
+ }));
60
65
  yield* Scope.addFinalizer(scope, runExport.pipe(Effect.ignore, Effect.interruptible, Effect.timeoutOption(options.shutdownTimeout)));
61
- let disabled = false;
62
- yield* Effect.sleep(exportInterval).pipe(Effect.zipRight(runExport), Effect.forever, Effect.catchAllCause(cause => {
63
- disabled = true;
64
- return Effect.logDebug("Failed to export", cause);
65
- }), Effect.annotateLogs({
66
+ yield* Effect.sleep(exportInterval).pipe(Effect.zipRight(runExport), Effect.forever, Effect.annotateLogs({
66
67
  package: "@effect/opentelemetry",
67
68
  module: options.label
68
69
  }), Effect.forkIn(scope), Effect.interruptible);
69
70
  const runFork = yield* FiberSet.makeRuntime().pipe(Effect.interruptible);
70
71
  return {
71
72
  push(data) {
72
- if (disabled) return;
73
+ if (disabledUntil !== undefined) return;
73
74
  buffer.push(data);
74
75
  if (options.maxBatchSize !== "disabled" && buffer.length >= options.maxBatchSize) {
75
76
  runFork(runExport);
@@ -1 +1 @@
1
- {"version":3,"file":"otlpExporter.js","names":["Headers","_interopRequireWildcard","require","HttpClient","HttpClientError","HttpClientRequest","Duration","Effect","FiberSet","Num","Option","Schedule","Scope","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","policy","forever","pipe","passthrough","addDelay","error","isHttpClientError","_tag","response","status","retryAfter","fromNullable","headers","flatMap","parse","getOrElse","seconds","make","exports","fnUntraced","options","scope","exportInterval","decode","client","filterStatusOk","tapError","void","retryAfterSeconds","parseInt","sleep","retryTransient","schedule","unsafeFromRecord","label","merge","fromInput","request","post","url","buffer","runExport","suspend","items","maxBatchSize","length","execute","bodyUnsafeJson","body","asVoid","withTracerEnabled","addFinalizer","ignore","interruptible","timeoutOption","shutdownTimeout","disabled","zipRight","catchAllCause","cause","logDebug","annotateLogs","package","module","forkIn","runFork","makeRuntime","push","data"],"sources":["../../../src/internal/otlpExporter.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"otlpExporter.js","names":["Headers","_interopRequireWildcard","require","HttpClient","HttpClientError","HttpClientRequest","Duration","Effect","FiberSet","Num","Option","Schedule","Scope","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","policy","forever","pipe","passthrough","addDelay","error","isHttpClientError","_tag","response","status","retryAfter","fromNullable","headers","flatMap","parse","getOrElse","seconds","make","exports","fnUntraced","options","clock","scope","exportInterval","decode","disabledUntil","undefined","client","filterStatusOk","retryTransient","schedule","times","unsafeFromRecord","label","merge","fromInput","request","post","url","buffer","runExport","suspend","unsafeCurrentTimeMillis","void","items","maxBatchSize","length","execute","bodyUnsafeJson","body","asVoid","withTracerEnabled","catchAllCause","cause","toMillis","logDebug","addFinalizer","ignore","interruptible","timeoutOption","shutdownTimeout","sleep","zipRight","annotateLogs","package","module","forkIn","runFork","makeRuntime","push","data"],"sources":["../../../src/internal/otlpExporter.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -18,17 +18,13 @@ const policy = /*#__PURE__*/Schedule.forever.pipe(Schedule.passthrough, /*#__PUR
18
18
  }));
19
19
  /** @internal */
20
20
  export const make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
21
+ const clock = yield* Effect.clock;
21
22
  const scope = yield* Effect.scope;
22
23
  const exportInterval = Duration.decode(options.exportInterval);
23
- const client = HttpClient.filterStatusOk(yield* HttpClient.HttpClient).pipe(HttpClient.tapError(error => {
24
- if (error._tag !== "ResponseError" || error.response.status !== 429) {
25
- return Effect.void;
26
- }
27
- const retryAfter = error.response.headers["retry-after"];
28
- const retryAfterSeconds = retryAfter ? parseInt(retryAfter, 10) : 5;
29
- return Effect.sleep(Duration.seconds(retryAfterSeconds));
30
- }), HttpClient.retryTransient({
31
- schedule: policy
24
+ let disabledUntil = undefined;
25
+ const client = HttpClient.filterStatusOk(yield* HttpClient.HttpClient).pipe(HttpClient.retryTransient({
26
+ schedule: policy,
27
+ times: 3
32
28
  }));
33
29
  let headers = Headers.unsafeFromRecord({
34
30
  "user-agent": `effect-opentelemetry-${options.label}/0.0.0`
@@ -41,6 +37,11 @@ export const make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
41
37
  });
42
38
  let buffer = [];
43
39
  const runExport = Effect.suspend(() => {
40
+ if (disabledUntil !== undefined && clock.unsafeCurrentTimeMillis() < disabledUntil) {
41
+ return Effect.void;
42
+ } else if (disabledUntil !== undefined) {
43
+ disabledUntil = undefined;
44
+ }
44
45
  const items = buffer;
45
46
  if (options.maxBatchSize !== "disabled") {
46
47
  if (buffer.length === 0) {
@@ -49,20 +50,20 @@ export const make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
49
50
  buffer = [];
50
51
  }
51
52
  return client.execute(HttpClientRequest.bodyUnsafeJson(request, options.body(items))).pipe(Effect.asVoid, Effect.withTracerEnabled(false));
52
- });
53
+ }).pipe(Effect.catchAllCause(cause => {
54
+ if (disabledUntil !== undefined) return Effect.void;
55
+ disabledUntil = clock.unsafeCurrentTimeMillis() + Duration.toMillis("1 minute");
56
+ return Effect.logDebug(`Disabling ${options.label} for 60 seconds`, cause);
57
+ }));
53
58
  yield* Scope.addFinalizer(scope, runExport.pipe(Effect.ignore, Effect.interruptible, Effect.timeoutOption(options.shutdownTimeout)));
54
- let disabled = false;
55
- yield* Effect.sleep(exportInterval).pipe(Effect.zipRight(runExport), Effect.forever, Effect.catchAllCause(cause => {
56
- disabled = true;
57
- return Effect.logDebug("Failed to export", cause);
58
- }), Effect.annotateLogs({
59
+ yield* Effect.sleep(exportInterval).pipe(Effect.zipRight(runExport), Effect.forever, Effect.annotateLogs({
59
60
  package: "@effect/opentelemetry",
60
61
  module: options.label
61
62
  }), Effect.forkIn(scope), Effect.interruptible);
62
63
  const runFork = yield* FiberSet.makeRuntime().pipe(Effect.interruptible);
63
64
  return {
64
65
  push(data) {
65
- if (disabled) return;
66
+ if (disabledUntil !== undefined) return;
66
67
  buffer.push(data);
67
68
  if (options.maxBatchSize !== "disabled" && buffer.length >= options.maxBatchSize) {
68
69
  runFork(runExport);
@@ -1 +1 @@
1
- {"version":3,"file":"otlpExporter.js","names":["Headers","HttpClient","HttpClientError","HttpClientRequest","Duration","Effect","FiberSet","Num","Option","Schedule","Scope","policy","forever","pipe","passthrough","addDelay","error","isHttpClientError","_tag","response","status","retryAfter","fromNullable","headers","flatMap","parse","getOrElse","seconds","make","fnUntraced","options","scope","exportInterval","decode","client","filterStatusOk","tapError","void","retryAfterSeconds","parseInt","sleep","retryTransient","schedule","unsafeFromRecord","label","merge","fromInput","request","post","url","buffer","runExport","suspend","items","maxBatchSize","length","execute","bodyUnsafeJson","body","asVoid","withTracerEnabled","addFinalizer","ignore","interruptible","timeoutOption","shutdownTimeout","disabled","zipRight","catchAllCause","cause","logDebug","annotateLogs","package","module","forkIn","runFork","makeRuntime","push","data"],"sources":["../../../src/internal/otlpExporter.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAO,KAAKA,OAAO,MAAM,0BAA0B;AACnD,OAAO,KAAKC,UAAU,MAAM,6BAA6B;AACzD,OAAO,KAAKC,eAAe,MAAM,kCAAkC;AACnE,OAAO,KAAKC,iBAAiB,MAAM,oCAAoC;AACvE,OAAO,KAAKC,QAAQ,MAAM,iBAAiB;AAC3C,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,QAAQ,MAAM,iBAAiB;AAC3C,OAAO,KAAKC,GAAG,MAAM,eAAe;AACpC,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,QAAQ,MAAM,iBAAiB;AAC3C,OAAO,KAAKC,KAAK,MAAM,cAAc;AAErC,MAAMC,MAAM,gBAAGF,QAAQ,CAACG,OAAO,CAACC,IAAI,CAClCJ,QAAQ,CAACK,WAAW,eACpBL,QAAQ,CAACM,QAAQ,CAAEC,KAAK,IAAI;EAC1B,IACEd,eAAe,CAACe,iBAAiB,CAACD,KAAK,CAAC,IACrCA,KAAK,CAACE,IAAI,KAAK,eAAe,IAC9BF,KAAK,CAACG,QAAQ,CAACC,MAAM,KAAK,GAAG,EAChC;IACA,MAAMC,UAAU,GAAGb,MAAM,CAACc,YAAY,CAACN,KAAK,CAACG,QAAQ,CAACI,OAAO,CAAC,aAAa,CAAC,CAAC,CAACV,IAAI,CAChFL,MAAM,CAACgB,OAAO,CAACjB,GAAG,CAACkB,KAAK,CAAC,EACzBjB,MAAM,CAACkB,SAAS,CAAC,MAAM,CAAC,CAAC,CAC1B;IACD,OAAOtB,QAAQ,CAACuB,OAAO,CAACN,UAAU,CAAC;EACrC;EACA,OAAOjB,QAAQ,CAACuB,OAAO,CAAC,CAAC,CAAC;AAC5B,CAAC,CAAC,CACH;AAED;AACA,OAAO,MAAMC,IAAI,gBAcbvB,MAAM,CAACwB,UAAU,CAAC,WAAUC,OAAO;EACrC,MAAMC,KAAK,GAAG,OAAO1B,MAAM,CAAC0B,KAAK;EACjC,MAAMC,cAAc,GAAG5B,QAAQ,CAAC6B,MAAM,CAACH,OAAO,CAACE,cAAc,CAAC;EAE9D,MAAME,MAAM,GAAGjC,UAAU,CAACkC,cAAc,CAAC,OAAOlC,UAAU,CAACA,UAAU,CAAC,CAACY,IAAI,CACzEZ,UAAU,CAACmC,QAAQ,CAAEpB,KAAK,IAAI;IAC5B,IAAIA,KAAK,CAACE,IAAI,KAAK,eAAe,IAAIF,KAAK,CAACG,QAAQ,CAACC,MAAM,KAAK,GAAG,EAAE;MACnE,OAAOf,MAAM,CAACgC,IAAI;IACpB;IACA,MAAMhB,UAAU,GAAGL,KAAK,CAACG,QAAQ,CAACI,OAAO,CAAC,aAAa,CAAC;IACxD,MAAMe,iBAAiB,GAAGjB,UAAU,GAAGkB,QAAQ,CAAClB,UAAU,EAAE,EAAE,CAAC,GAAG,CAAC;IACnE,OAAOhB,MAAM,CAACmC,KAAK,CAACpC,QAAQ,CAACuB,OAAO,CAACW,iBAAiB,CAAC,CAAC;EAC1D,CAAC,CAAC,EACFrC,UAAU,CAACwC,cAAc,CAAC;IAAEC,QAAQ,EAAE/B;EAAM,CAAE,CAAC,CAChD;EAED,IAAIY,OAAO,GAAGvB,OAAO,CAAC2C,gBAAgB,CAAC;IACrC,YAAY,EAAE,wBAAwBb,OAAO,CAACc,KAAK;GACpD,CAAC;EACF,IAAId,OAAO,CAACP,OAAO,EAAE;IACnBA,OAAO,GAAGvB,OAAO,CAAC6C,KAAK,CAAC7C,OAAO,CAAC8C,SAAS,CAAChB,OAAO,CAACP,OAAO,CAAC,EAAEA,OAAO,CAAC;EACtE;EAEA,MAAMwB,OAAO,GAAG5C,iBAAiB,CAAC6C,IAAI,CAAClB,OAAO,CAACmB,GAAG,EAAE;IAAE1B;EAAO,CAAE,CAAC;EAChE,IAAI2B,MAAM,GAAe,EAAE;EAC3B,MAAMC,SAAS,GAAG9C,MAAM,CAAC+C,OAAO,CAAC,MAAK;IACpC,MAAMC,KAAK,GAAGH,MAAM;IACpB,IAAIpB,OAAO,CAACwB,YAAY,KAAK,UAAU,EAAE;MACvC,IAAIJ,MAAM,CAACK,MAAM,KAAK,CAAC,EAAE;QACvB,OAAOlD,MAAM,CAACgC,IAAI;MACpB;MACAa,MAAM,GAAG,EAAE;IACb;IACA,OAAOhB,MAAM,CAACsB,OAAO,CACnBrD,iBAAiB,CAACsD,cAAc,CAACV,OAAO,EAAEjB,OAAO,CAAC4B,IAAI,CAACL,KAAK,CAAC,CAAC,CAC/D,CAACxC,IAAI,CACJR,MAAM,CAACsD,MAAM,EACbtD,MAAM,CAACuD,iBAAiB,CAAC,KAAK,CAAC,CAChC;EACH,CAAC,CAAC;EAEF,OAAOlD,KAAK,CAACmD,YAAY,CACvB9B,KAAK,EACLoB,SAAS,CAACtC,IAAI,CACZR,MAAM,CAACyD,MAAM,EACbzD,MAAM,CAAC0D,aAAa,EACpB1D,MAAM,CAAC2D,aAAa,CAAClC,OAAO,CAACmC,eAAe,CAAC,CAC9C,CACF;EAED,IAAIC,QAAQ,GAAG,KAAK;EAEpB,OAAO7D,MAAM,CAACmC,KAAK,CAACR,cAAc,CAAC,CAACnB,IAAI,CACtCR,MAAM,CAAC8D,QAAQ,CAAChB,SAAS,CAAC,EAC1B9C,MAAM,CAACO,OAAO,EACdP,MAAM,CAAC+D,aAAa,CAAEC,KAAK,IAAI;IAC7BH,QAAQ,GAAG,IAAI;IACf,OAAO7D,MAAM,CAACiE,QAAQ,CAAC,kBAAkB,EAAED,KAAK,CAAC;EACnD,CAAC,CAAC,EACFhE,MAAM,CAACkE,YAAY,CAAC;IAClBC,OAAO,EAAE,uBAAuB;IAChCC,MAAM,EAAE3C,OAAO,CAACc;GACjB,CAAC,EACFvC,MAAM,CAACqE,MAAM,CAAC3C,KAAK,CAAC,EACpB1B,MAAM,CAAC0D,aAAa,CACrB;EAED,MAAMY,OAAO,GAAG,OAAOrE,QAAQ,CAACsE,WAAW,EAAE,CAAC/D,IAAI,CAChDR,MAAM,CAAC0D,aAAa,CACrB;EACD,OAAO;IACLc,IAAIA,CAACC,IAAI;MACP,IAAIZ,QAAQ,EAAE;MACdhB,MAAM,CAAC2B,IAAI,CAACC,IAAI,CAAC;MACjB,IAAIhD,OAAO,CAACwB,YAAY,KAAK,UAAU,IAAIJ,MAAM,CAACK,MAAM,IAAIzB,OAAO,CAACwB,YAAY,EAAE;QAChFqB,OAAO,CAACxB,SAAS,CAAC;MACpB;IACF;GACD;AACH,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"otlpExporter.js","names":["Headers","HttpClient","HttpClientError","HttpClientRequest","Duration","Effect","FiberSet","Num","Option","Schedule","Scope","policy","forever","pipe","passthrough","addDelay","error","isHttpClientError","_tag","response","status","retryAfter","fromNullable","headers","flatMap","parse","getOrElse","seconds","make","fnUntraced","options","clock","scope","exportInterval","decode","disabledUntil","undefined","client","filterStatusOk","retryTransient","schedule","times","unsafeFromRecord","label","merge","fromInput","request","post","url","buffer","runExport","suspend","unsafeCurrentTimeMillis","void","items","maxBatchSize","length","execute","bodyUnsafeJson","body","asVoid","withTracerEnabled","catchAllCause","cause","toMillis","logDebug","addFinalizer","ignore","interruptible","timeoutOption","shutdownTimeout","sleep","zipRight","annotateLogs","package","module","forkIn","runFork","makeRuntime","push","data"],"sources":["../../../src/internal/otlpExporter.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect/opentelemetry",
3
- "version": "0.56.1",
3
+ "version": "0.56.2",
4
4
  "description": "OpenTelemetry integration for Effect",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -19,8 +19,8 @@
19
19
  "@opentelemetry/sdk-trace-web": "^2.0.0",
20
20
  "@opentelemetry/sdk-logs": "^0.203.0",
21
21
  "@opentelemetry/semantic-conventions": "^1.33.0",
22
- "@effect/platform": "^0.90.0",
23
- "effect": "^3.17.6"
22
+ "@effect/platform": "^0.90.2",
23
+ "effect": "^3.17.7"
24
24
  },
25
25
  "peerDependenciesMeta": {
26
26
  "@opentelemetry/api": {
@@ -44,19 +44,13 @@ export const make: (
44
44
  never,
45
45
  HttpClient.HttpClient | Scope.Scope
46
46
  > = Effect.fnUntraced(function*(options) {
47
+ const clock = yield* Effect.clock
47
48
  const scope = yield* Effect.scope
48
49
  const exportInterval = Duration.decode(options.exportInterval)
50
+ let disabledUntil: number | undefined = undefined
49
51
 
50
52
  const client = HttpClient.filterStatusOk(yield* HttpClient.HttpClient).pipe(
51
- HttpClient.tapError((error) => {
52
- if (error._tag !== "ResponseError" || error.response.status !== 429) {
53
- return Effect.void
54
- }
55
- const retryAfter = error.response.headers["retry-after"]
56
- const retryAfterSeconds = retryAfter ? parseInt(retryAfter, 10) : 5
57
- return Effect.sleep(Duration.seconds(retryAfterSeconds))
58
- }),
59
- HttpClient.retryTransient({ schedule: policy })
53
+ HttpClient.retryTransient({ schedule: policy, times: 3 })
60
54
  )
61
55
 
62
56
  let headers = Headers.unsafeFromRecord({
@@ -69,6 +63,11 @@ export const make: (
69
63
  const request = HttpClientRequest.post(options.url, { headers })
70
64
  let buffer: Array<any> = []
71
65
  const runExport = Effect.suspend(() => {
66
+ if (disabledUntil !== undefined && clock.unsafeCurrentTimeMillis() < disabledUntil) {
67
+ return Effect.void
68
+ } else if (disabledUntil !== undefined) {
69
+ disabledUntil = undefined
70
+ }
72
71
  const items = buffer
73
72
  if (options.maxBatchSize !== "disabled") {
74
73
  if (buffer.length === 0) {
@@ -82,7 +81,13 @@ export const make: (
82
81
  Effect.asVoid,
83
82
  Effect.withTracerEnabled(false)
84
83
  )
85
- })
84
+ }).pipe(
85
+ Effect.catchAllCause((cause) => {
86
+ if (disabledUntil !== undefined) return Effect.void
87
+ disabledUntil = clock.unsafeCurrentTimeMillis() + Duration.toMillis("1 minute")
88
+ return Effect.logDebug(`Disabling ${options.label} for 60 seconds`, cause)
89
+ })
90
+ )
86
91
 
87
92
  yield* Scope.addFinalizer(
88
93
  scope,
@@ -93,15 +98,9 @@ export const make: (
93
98
  )
94
99
  )
95
100
 
96
- let disabled = false
97
-
98
101
  yield* Effect.sleep(exportInterval).pipe(
99
102
  Effect.zipRight(runExport),
100
103
  Effect.forever,
101
- Effect.catchAllCause((cause) => {
102
- disabled = true
103
- return Effect.logDebug("Failed to export", cause)
104
- }),
105
104
  Effect.annotateLogs({
106
105
  package: "@effect/opentelemetry",
107
106
  module: options.label
@@ -115,7 +114,7 @@ export const make: (
115
114
  )
116
115
  return {
117
116
  push(data) {
118
- if (disabled) return
117
+ if (disabledUntil !== undefined) return
119
118
  buffer.push(data)
120
119
  if (options.maxBatchSize !== "disabled" && buffer.length >= options.maxBatchSize) {
121
120
  runFork(runExport)