¿Cómo funciona promisifyAll, o cuáles son los requisitos para que funcione?

En una biblioteca de promesas, bluebird tiene la función promisifyAll u otras bibliotecas similares que afirman convertir funciones asíncronas con patrones de devolución de llamada en promesas, es decir.resolve(), reject()odone()..¿Entonces, cómo funciona?

Por ejemplo:

function myAsync1 (data, url, callBack) {...}

y si lo pongo

Promise.promisify(myAsycn1);

entonces mi función funcionará así ...

myAsync1('{..}', 'http://..').then(function(){...});

Esto me ha estado molestando. ¿Hay algún patrón que las bibliotecas o funciones asíncronas no prometedoras deban seguir para que Bluebird promisifyAll las convierta en métodos basados en promesas o hay alguna magia que las convierte?

Si no, ¿cuáles son los requisitos y cómo funciona con las bibliotecas existentes como mongodb, etc.

Respuestas a la pregunta(2)

Su respuesta a la pregunta