Conjuring JQuery diferido con encantamientos monádicos

Inspirado porest (excelente) discusión sobre el uso de Promesas en javascript, estoy tratando de averiguar cómo podría usar Diferido para encadenar funciones asíncronas y no asíncronas, para evitar pagar el impuesto de devolución de llamada cuando uso mi ' Almacenamiento global 'código.

Tengo algunas preguntas relacionadas con esto, pero las haré juntas aquí, porque el contexto es el mismo.

Una cosa que no puedo resolver es cómo puedo hacer un aplazamiento de algo que no es asincrónico, es decir, ¿cómo tomo un valor, lo envuelvo en una promesa y lo devuelvo directamente? a -> M<a>)

Además, ¿cómo puedo tomar una función asincrónica y ajustarla para que devuelva su resultado directamente, pero envuelto en una promesa? (a -> b) -> (a -> M<b>))

Última pregunta, para los fanáticos monádicos: ¿hay un nombre estándar para esta función? @[a] -> (a -> M<b>) -> M<[b]>

Respuestas a la pregunta(3)

Su respuesta a la pregunta