'a'
mh-two-thousand-and-two
2024-04-12 44d2c92345cd156a59fc327b3060292a282d2893
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
'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)
  })
}