1.0.0 • Published 10 years ago
dezonkey v1.0.0
dezonkey
dezonkey forbids callback style functions from throwing. It'll catch the exception and pass it to the callback instead.
Getting started
npm install dezonkey
var dezonkey = require('dezonkey');
or
<script src="node_modules/dezonkey/index.js"></script>
var dezonkey = window.dezonkey
Usage
// here is a an example of a zonkey function
function delay (time, cb) {
if (typeof time !== 'number') {
throw new Error(time + ' is not a number')
}
setTimeout(cb, time)
}
// what if the first argument is user input and we forgot a check? process will crash
delay('123', cb) // throws
// what if a user/program repeatedly sends that value?
// process will repeatedly crash
// we could do that
function onError(err) {
...
}
try {
delay('123', function (err) {
if (err) onError(err)
})
} catch (err) {
onError(err)
}
// but here is a nicer solution
var safeDelay = dezonkey(delay)
safeDelay('123', cb) // will not throw, passes the exception to the callback
// dezonkey is also pretty useful if you're writing your own functions
function myFunction (time, cb) {
return dezonkey(function () {
if (typeof time !== 'number') {
// instead of `return cb(new Error(...))`
// who never forgot that return keyword?
throw new Error(time + ' is not a number')
}
setTimeout(cb, time)
})
}
Example
See example.js
Benchmark
See benchmark
Test
npm install standard
npm test
1.0.0
10 years ago