It builds a function dynamically and then compiles it and lets the JIT optimize it - it incurs very little overhead.
This is impossible if your only tool is the promise constructor. That said - there are packages that do this without bluebird - like thenify.
Also note - you can use bluebird for promisification and native promises for other stuff if you'd like and it'd work seamlessly as bluebird passes the Promises/A+ test suite.