| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 | 'use strict'var nextTick = nextTickArgsprocess.nextTick(upgrade, 42) // pass 42 and see if upgrade is called with itmodule.exports = thunkyfunction 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)  })}
 |