the cost should be negligible compared to the database access, often the issue that promises have are latency but that won't effect the callback.  The code will be run inside a try block which will deoptimize the cod in *some* browsers, but again the proportionally small.

I wanted the function to always return a promise, having it sometimes return a promise and sometimes not depending on whether a call back is present is something i'd argue would be confusing.