traced-kew
A promise library compatible with Medium's kew promises library with support added for LightStep OpenTracing instrumentation.
Compatibility-note: the library implementation currently relies on several LightStep-specific methods and is not compatible with all OpenTracing tracer implementations.
Getting started
npm install --save traced-kew
Initialize the OpenTracing global tracer (the library currently uses the OpenTracing global tracer for all operations):
Tracer;
Use the library as you would use the kew library:
; Qall Q Q;
Use the traced
version of the various kew
methods to add OpenTracing tracing annotations:
; // Start a span to track the chained promiseslet span = Tracer;Q; // Let the library know the chaining is done
:success_parrot:
Demo
The access_token
values in the examples need to be updated to your project's access token, then the following can be run:
make demo-ok # Makes a trace with only successful operations
make demo-fail # Makes a trace containing spans with errors
Trace for the resolved promises
Trace for the rejected promises
API
- Static methods
all(promises)
,tracedAll(span, promises)
bindPromise(fn, scope, …boundArgs)
defer()
,tracedDefer(name, parentSpan)
delay(ms)
,tracedDelay(name, parent, ms)
- fcall is not yet implemented
- isPromise is not yet implemented
- isPromiseLike is not yet implemented
- ncall is not yet implemented
- nfcall is not yet implemented
reject(reason)
resolve(value)
spread(promise, fn)
stats()
allSettled(promises)
getNextTickFunction()
setNextTickFunction()
- Instance methods
fail(function(reason))
,tracedFail(function(span, reason))
fin(function)
,tracedFin(function(span))
makeNodeResolver()
spread(…args)
,tracedSpread(span, …args)
reject(reason)
resolve(value)
then(function(result))
,tracedThen(function(span, result))
finish(function(span))
span()
Testing
make test