The following javascript function is from You Don't Know JS: Async & Performance. According to my understanding, the first comment // start doing something that could take a while is misleading. The section of the code where something is actually done possibly asynchronously is in the function passed into the Promise constructor.
function foo(x) {
    // start doing something that could take a while *misleading comment*
    // construct and return a promise
    return new Promise( /* executor */ function(resolve,reject){
        // eventually, call `resolve(..)` or `reject(..)`,
        // which are the resolution callbacks for
        // the promise.
    } );
}
I would fix it in the following way:
function foo(x) {
    // construct and return a promise
    return new Promise( /* executor */ function(resolve,reject){
        // start doing something that could take a while
        // then foo returns the newly created Promise
        // eventually, call `resolve(..)` or `reject(..)`,
        // which are the resolution callbacks for
        // the promise.
    } );
}
 
     
     
    