Hi, I do not know if this is the correct list to discuss these things. If it is 
not, please redirect me.

I have done some work on implementing the AP2 draft I could find here 
http://github.com/domenic/promises-unwrapping and I have a few potential bugs 
to report.  If this is not the latest draft, please direct me to the 
appropriate resource to use.

My implementation is available at http://gist.github.com/anonymous/6399102

## UpdateDerived

**UpdateDerived** step 2.1 says:

    If IsObject(originator.[[Value]]), queue a microtask to run the following:

Am I correct to understand that "queue a microtask" means that the task should 
be run asynchronously?  For this, I am currently using a function called 
`defer(f)` which is just a wrapper around `setTimeout(f, 0)`.

Using this code as an example:

    var p = new Promise(function(resolve, reject) {
        resolve('a');
    });

    p.then(function(value) {
       console.log(2, value);
    });

    console.log(1);

I would expect the output to be:

    1
    2 a

The way the draft is currently written (as shown in this gist 
http://gist.github.com/anonymous/6399102 ), the code above will instead log:

    2 a
    1

However, this code:

    var p = new Promise(function(resolve, reject) {
        resolve({ value: 'a' });
    });

    p.then(function(value) {
       console.log(2, value);
    });

    console.log(1);

will log:

    1
    2 { value: 'a' }

because the "queue a microtask" only happens when the promise is resolved with 
an object.

I think that "queue a microtask" should be around everything after step 1 in 
**UpdateDerived** instead, as seen in this gist 
http://gist.github.com/anonymous/6399033 which will log the values in the 
expected order.

## UpdateFromReason -> UpdateDerivedFromReason

Additionally, there's a typo where a function named **UpdateFromReason** is 
defined. I think it is intended to be called **UpdateDerivedFromReason**, as 
that's what it's called elsewhere in the document.

I welcome any comments on my implementation as well.

Nathan                                    
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to