Como o promisifyAll funciona ou quais são os requisitos para ele funcionar?

Em uma biblioteca de promessas, o bluebird tem a função promisifyAll ou outras bibliotecas semelhantes que afirmam converter funções assíncronas com padrões de retorno de chamada em ie com base em promessas.resolve(), reject()oudone()..Então, como isso funciona?

Por exemplo:

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

e se eu colocar

Promise.promisify(myAsycn1);

então minha função funcionará assim ..

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

Isso está me incomodando. Existe um padrão que as assinaturas ou funções não prometidas assíncronas precisam seguir para o Bluebird promisifyAll para convertê-las em métodos baseados em promessas ou existe alguma mágica que as converte.

Caso contrário, quais são os requisitos e como ele funciona com as bibliotecas existentes, como o mongodb etc.

questionAnswers(2)

yourAnswerToTheQuestion