docs: function promiseForCallback( fun, callback) {
          var deferred = Q.defer();
          fun( function( error, result) {
              callback(error, result, deferred);
          });
          return deferred.promise;
      }