title: Best Way to Chain Callbacks?
body: <p>I have a question about the best way to chain callbacks together while passing data between them. I have an example below which works, but has the flaw that the functions have to be aware of the chain and know their position / whether to pass on a call back.</p>
  
  <pre><code>function first(data, cb1, cb2, cb3){
      console.log("first()", data);
      cb1(data,cb2, cb3);
  }
  function second(data, cb1, cb2) {
      console.log("second()",data);
      cb1(data, cb2);
  }
  function third(data, cb) {
      console.log("third()",data);
      cb(data);
  }
  function last(data) {
      console.log("last() ", data);
  }
  first("THEDATA", second, third, last);  // This work OK
  first("THEDATA2", second, last);        // This works OK
  first("THEDATA3", second);              // This doesn't work as second tries to pass on a callback that doesn't exit.
  </code></pre>
  
  <p>I can think of a number of ways around this, but they all involve in making the called functions aware of what is going on. But my problem is that the real functions I’m dealing with already exist, and I don’t want to modify them if I can avoid it. So I wondered if I was missing a trick in terms of how these could be called?</p>