You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
'use strict'
var nextTick = nextTickArgs process.nextTick(upgrade, 42) // pass 42 and see if upgrade is called with it
module.exports = thunky
function thunky (fn) { var state = run return thunk
function thunk (callback) { state(callback || noop) }
function run (callback) { var stack = [callback] state = wait fn(done)
function wait (callback) { stack.push(callback) }
function done (err) { var args = arguments state = isError(err) ? run : finished while (stack.length) finished(stack.shift())
function finished (callback) { nextTick(apply, callback, args) } } } }
function isError (err) { // inlined from util so this works in the browser
return Object.prototype.toString.call(err) === '[object Error]' }
function noop () {}
function apply (callback, args) { callback.apply(null, args) }
function upgrade (val) { if (val === 42) nextTick = process.nextTick }
function nextTickArgs (fn, a, b) { process.nextTick(function () { fn(a, b) }) }
|