socket.io socket.set y socket.get: ¿para qué sirve el argumento de devolución de llamada?

Solo quiero adjuntar algunas variables a mis sockets, pero no entiendo los métodos .get y .set. Ambos tienen un tercer argumento para una devolución de llamada. ¿Se puede omitir esto? ¡¿Para qué sirve?! ¿La devolución de llamada en sí en otros argumentos?

Mi mejor conjetura es que está ahí cuando socket.io no está usando el almacenamiento de memoria pero está guardando estas cosas en otro lugar y necesita un error al verificar la devolución de llamada.

<code>socket.on('set nickname', function (name) {
    socket.set('nickname', name, function (arguments) {
      doSomethingMysterious();
    });
</code>

Estoy usando socket.io 0.9.x

La función está definida en socket.js.

<code>/**
 * Stores data for the client.
 *
 * @api public
 */

Socket.prototype.set = function (key, value, fn) {
  this.store.set(key, value, fn);
  return this;
};
</code>

Respuestas a la pregunta(2)

Su respuesta a la pregunta