Suppose I have this code
function y(resolve, reject)
{
  console.log("Result");
  resolve();
}  
var promise = new Promise(y);
What I want to know is whether the function y will be executed asynchronously or not.
Suppose I have this code
function y(resolve, reject)
{
  console.log("Result");
  resolve();
}  
var promise = new Promise(y);
What I want to know is whether the function y will be executed asynchronously or not.
It depends on the implementation of the promise. If we check the spec. You can find the final spec here - since this answer was originally written, it has been finalized.
Here is the relevant excerpt (you can find the original source here)
The ES6 standard indicates that the fulfillment of a promise is always asynchronous (See section 25.4.5.3, Promise.prototype.then and accompanying section 25.4.5.3.1, PerformPromiseThen). I have placed the relevant material below.
TLDR: the function passed to the promise is executed synchronously, but subsequent then calls are always executed asynchronously.
 
    
     
    
    The other answer proves this, but let me talk about the reasoning:
The promise constructor callback (as specified either in the ES6 spec or the constructor spec libraries implement) will always be executed synchronously - this is in order to extract a deferred (older form of promise construction) out of it in case you need to have access to the resolve callback:
var r;
var p new Promise(function(resolve, reject){
    r = resolve;
});
// use r here, for example
arr.push(r);
then callbacksthen will always be executed asynchronously, virtually all mainstream  promise implementations (Native, bluebird, $q, Q, when, rsvp, promise, jQuery (as of 3.0) etc) as well as native promises implement (or implement a superset of, with more constraints) Promises/A+. 
This is exactly the reason that Promises/A+ was created out of Promises/A. Asynchronous guarantees will be preserved and Zalgo won't be released. (Also see this post).
The fact this happens (asynchronous guarantee) is completely intentional and actively prevents race conditions. Code in- and outside of then will always execute in the same order.
Here is the relevant quote:
onFulfilledoronRejectedmust not be called until the execution context stack contains only platform code. [3.1].
 
    
    