title: Socket.io passing callback functions
body: <p>I am perplexed as to what is happening in this scenario</p>
  
  <p><strong>Client:</strong></p>
  
  <pre><code>socket.emit('ferret', 'tobi', function (data) {
    console.log(data); // data will be 'woot'
  });
  </code></pre>
  
  <p><strong>Server:</strong></p>
  
  <pre><code>io.on('connection', function (socket) {
      socket.on('ferret', function (name, fn) {
        fn('woot');
      });   
  });
  </code></pre>
  
  <p>This is from the docs. How does it make any sense that a function is being passed to the server for the callback? How can the server be calling a client function? I am very confused.</p>