<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>198643</bug_id>
          
          <creation_ts>2019-06-06 21:29:07 -0700</creation_ts>
          <short_desc>async function resolution order</short_desc>
          <delta_ts>2023-10-11 17:03:24 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>Safari 12</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="John Plaisted">johnplaisted</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ashvayka</cc>
    
    <cc>fpizlo</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1542713</commentid>
    <comment_count>0</comment_count>
      <attachid>371556</attachid>
    <who name="John Plaisted">johnplaisted</who>
    <bug_when>2019-06-06 21:29:07 -0700</bug_when>
    <thetext>Created attachment 371556
Test demonstrating differences in async / promise behavior

Steps to reproduce:

The await keyword has a different resolution order than Promises, which seems incorrect (and fwiw Chrome&apos;s await matches promises; FireFox appears to share Safari&apos;s behavior).

I think I&apos;ve found two different cases where the order is different from promises:

In some cases the await order determines when functions continue (rather than the resolve() order, assuming things resolve synchronously)
In some other cases it seems to be the opposite of the resolve AND await order when the are the same order. Maybe it is because one is an await &lt;literal&gt; and the other is an await promise?

Actual results:

The order of asynchronous code with an async function doesn&apos;t match the equivalent promise code.

When running the file:

async test fails
promise test passes
order of await determines order of async callbacks
order resolve() determines order of promise callbacks


Expected results:

The async function order matches the Promise equivalent.

When running the file:

async test passes
promise test passes
order of resolve() determines order of async callbacks
order resolve() determines order of promise callbacks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1542826</commentid>
    <comment_count>1</comment_count>
    <who name="John Plaisted">johnplaisted</who>
    <bug_when>2019-06-07 08:12:14 -0700</bug_when>
    <thetext>I did file a webkit bug as well:

https://bugs.webkit.org/show_bug.cgi?id=198643</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1542827</commentid>
    <comment_count>2</comment_count>
    <who name="John Plaisted">johnplaisted</who>
    <bug_when>2019-06-07 08:12:45 -0700</bug_when>
    <thetext>Err, I filed a *FireFox* bug as well :)

https://bugzilla.mozilla.org/show_bug.cgi?id=1557611</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1971196</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2023-08-14 18:32:37 -0700</bug_when>
    <thetext>&lt;rdar://problem/113883375&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1984465</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2023-10-11 17:03:24 -0700</bug_when>
    <thetext>Hey John, thanks for filing the bugs and providing super well-written test case!

Per https://bugzilla.mozilla.org/show_bug.cgi?id=1557611#c7, the difference that was observed in 2019 was due to not all browsers (yet) implementing the spec change: https://github.com/tc39/ecma262/pull/1250.

All browsers, including Safari 16.1, are passing the tests.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>371556</attachid>
            <date>2019-06-06 21:29:07 -0700</date>
            <delta_ts>2019-06-06 21:29:07 -0700</delta_ts>
            <desc>Test demonstrating differences in async / promise behavior</desc>
            <filename>test2.html</filename>
            <type>text/html</type>
            <size>3780</size>
            <attacher name="John Plaisted">johnplaisted</attacher>
            
              <data encoding="base64">PHNjcmlwdD4KYXN5bmMgZnVuY3Rpb24gdGVzdFNhZmFyaUZpcmVGb3hCdWcoKSB7CiAgbGV0IHJl
c29sdmU7CiAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyKSA9PiByZXNvbHZlID0gcik7
CgogIGxldCBkb25lID0gZmFsc2U7CiAgYXN5bmMgZnVuY3Rpb24gaGVscGVyKCkgewogICAgYXdh
aXQgcHJvbWlzZTsKICAgIGRvbmUgPSB0cnVlOwogIH0KCiAgaGVscGVyKCk7CgogIC8vIFF1ZXVl
OiBbXQogIHJlc29sdmUoKTsgLy8gUXVldWU6IFtyZXNvbHZlIFAwICh0aGVuIGRvbmUpXQogIGF3
YWl0IDA7IC8vIFF1ZXVlOiBbcmVzb2x2ZSBQMCAodGhlbiBkb25lKSwgdGhpcyBhd2FpdCAodGhl
biBhc3NlcnQpXQoKICAvLyBJIGRvIG5vdCBoYXZlIGFueSB0aGVvcmllcyBhcyB0byB3aHkgdGhp
cyBmYWlscy4KICAvLyBDbGVhcmx5IHRoaXMgb3V0ZXIgZnVuY3Rpb24gYGF3YWl0c2Agc2Vjb25k
LCBhbmQgdGhlIGZpcnN0IGlzIHJlc29sdmVkIGFscmVhZHksIGFuZCB0aGUgdGVzdEFzeW5jT3Jk
ZXIKICAvLyBiZWxvdyBjb25maXJtcyB0aGF0IChvbiB0aGUgYnJvd3NlcnMgd2l0aCB0aGUgYnVn
KSB0aGUgYXdhaXQgb3JkZXIKICAvLyBkZXRlcm1pbmVzIHRoZSBjYWxsYmFjayBvcmRlci4gVGhl
c2Ugc2VlbSBhbG1vc3QgaW4gY29uZmxpY3Q/CiAgLy8gSGVyZSB0aGUgYXdhaXQgQU5EIHJlc29s
dmUgb3JkZXJzIGJhc2ljYWxseSBtYXRjaCwgeWV0IHRoZSBjb250aW51YXRpb24gb3JkZXIKICAv
LyBpcyBjb21wbGV0ZWx5IHRoZSBvcHBvc2l0ZT8KICAvLyBNYXliZSBpdCBpcyBiZWNhdXNlIHRl
c3RBc3luY09yZGVyIG9ubHkgdXNlcyBwcm9taXNlcywgYnV0IGFib3ZlCiAgLy8gdGhlcmUncyBh
biBgYXdhaXQgMGA/CiAgaWYgKGRvbmUpIGFsZXJ0KCdhc3luYyB0ZXN0IHBhc3NlZCcpOwogIGVs
c2UgYWxlcnQoJ2FzeW5jIHRlc3QgZmFpbGVkJyk7Cn0KCmZ1bmN0aW9uIHRlc3RTYWZhcmlGaXJl
Rm94QnVnX3Byb21pc2VzKCkgewogIGxldCByZXNvbHZlOwogIGNvbnN0IHByb21pc2UgPSBuZXcg
UHJvbWlzZSgocikgPT4gcmVzb2x2ZSA9IHIpOwoKICBsZXQgZG9uZSA9IGZhbHNlOwogIGZ1bmN0
aW9uIGhlbHBlcigpIHsKICAgIHByb21pc2UudGhlbigoKSA9PiB7CiAgICAgIGRvbmUgPSB0cnVl
OwogICAgfSk7CiAgfQoKICBoZWxwZXIoKTsKCiAgLy8gUXVldWU6IFtdCiAgcmVzb2x2ZSgpOyAv
LyBRdWV1ZTogW3Jlc29sdmUgUDAgKHRoZW4gZG9uZSldCiAgcmV0dXJuIFByb21pc2UucmVzb2x2
ZSgpLnRoZW4oKCkgPT4geyAvLyBRdWV1ZTogW3Jlc29sdmUgUDAgKHRoZW4gZG9uZSksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIHByb21pc2UgKHRoZW4g
YXNzZXJ0KV0KCiAgICBpZiAoZG9uZSkgYWxlcnQoJ3Byb21pc2UgdGVzdCBwYXNzZWQnKTsKICAg
IGVsc2UgYWxlcnQoJ3Byb21pc2UgdGVzdCBmYWlsZWQnKTsKICB9KTsKfQoKY2xhc3MgUmVzb2x2
ZXIgewogIGNvbnN0cnVjdG9yKCkgewogICAgdGhpcy5wcm9taXNlID0gbmV3IFByb21pc2UociA9
PiB0aGlzLnJlc29sdmUgPSByKTsKICB9Cn0KICAKYXN5bmMgZnVuY3Rpb24gdGVzdEFzeW5jT3Jk
ZXIoCiAgaW52ZXJ0UHJvbWlzZUNyZWF0aW9uLAogIGludmVydENhbGxzLAogIGludmVydFJlc29s
dmUKKSB7CiAgbGV0IGEsIGI7CiAgaWYgKGludmVydFByb21pc2VDcmVhdGlvbikgewogICAgYiA9
IG5ldyBSZXNvbHZlcigpOwogICAgYSA9IG5ldyBSZXNvbHZlcigpOwogIH0gZWxzZSB7CiAgICBh
ID0gbmV3IFJlc29sdmVyKCk7CiAgICBiID0gbmV3IFJlc29sdmVyKCk7CiAgfQogIGNvbnN0IGFy
ciA9IFtdOwogIGFzeW5jIGZ1bmN0aW9uIGhlbHBlcihyLCBpKSB7CiAgICBhd2FpdCByLnByb21p
c2U7CiAgICBhcnIucHVzaChpKTsKICB9CgogIGNvbnN0IHByb21pc2VzID0gW107CgogIGlmIChp
bnZlcnRDYWxscykgewogICAgcHJvbWlzZXMucHVzaChoZWxwZXIoYiwgMSkpOwogICAgcHJvbWlz
ZXMucHVzaChoZWxwZXIoYSwgMCkpOwogIH0gZWxzZSB7CiAgICBwcm9taXNlcy5wdXNoKGhlbHBl
cihhLCAwKSk7CiAgICBwcm9taXNlcy5wdXNoKGhlbHBlcihiLCAxKSk7CiAgfQoKICBpZiAoaW52
ZXJ0UmVzb2x2ZSkgewogICAgYi5yZXNvbHZlKCk7CiAgICBhLnJlc29sdmUoKTsKICB9IGVsc2Ug
ewogICAgYS5yZXNvbHZlKCk7CiAgICBiLnJlc29sdmUoKTsKICB9CiAgYXdhaXQgUHJvbWlzZS5h
bGwocHJvbWlzZXMpOwogIHJldHVybiBhcnJbMF07Cn0KICAKZnVuY3Rpb24gdGVzdFByb21pc2VP
cmRlcigKICAgIGludmVydFByb21pc2VDcmVhdGlvbiwKICAgIGludmVydENhbGxzLAogICAgaW52
ZXJ0UmVzb2x2ZQogICkgewogICAgbGV0IGEsIGI7CiAgICBpZiAoaW52ZXJ0UHJvbWlzZUNyZWF0
aW9uKSB7CiAgICAgIGIgPSBuZXcgUmVzb2x2ZXIoKTsKICAgICAgYSA9IG5ldyBSZXNvbHZlcigp
OwogICAgfSBlbHNlIHsKICAgICAgYSA9IG5ldyBSZXNvbHZlcigpOwogICAgICBiID0gbmV3IFJl
c29sdmVyKCk7CiAgICB9CiAgICBjb25zdCBhcnIgPSBbXTsKICAgIGZ1bmN0aW9uIGhlbHBlcihy
LCBpKSB7CiAgICAgIHJldHVybiByLnByb21pc2UudGhlbigoKSA9PiBhcnIucHVzaChpKSk7CiAg
ICB9CgogICAgY29uc3QgcHJvbWlzZXMgPSBbXTsKCiAgICBpZiAoaW52ZXJ0Q2FsbHMpIHsKICAg
ICAgcHJvbWlzZXMucHVzaChoZWxwZXIoYiwgMSkpOwogICAgICBwcm9taXNlcy5wdXNoKGhlbHBl
cihhLCAwKSk7CiAgICB9IGVsc2UgewogICAgICBwcm9taXNlcy5wdXNoKGhlbHBlcihhLCAwKSk7
CiAgICAgIHByb21pc2VzLnB1c2goaGVscGVyKGIsIDEpKTsKICAgIH0KCiAgICBpZiAoaW52ZXJ0
UmVzb2x2ZSkgewogICAgICBiLnJlc29sdmUoKTsKICAgICAgYS5yZXNvbHZlKCk7CiAgICB9IGVs
c2UgewogICAgICBhLnJlc29sdmUoKTsKICAgICAgYi5yZXNvbHZlKCk7CiAgICB9CiAgICByZXR1
cm4gUHJvbWlzZS5hbGwocHJvbWlzZXMpLnRoZW4oKCkgPT4gYXJyWzBdKTsKICB9Cgphc3luYyBm
dW5jdGlvbiB0ZXN0KGZuLCBtb2RlLCBraW5kKSB7CiAgY29uc3Qgbm9DaGFuZ2VzID0gYXdhaXQg
Zm4oZmFsc2UsIGZhbHNlLCBmYWxzZSk7CiAgY29uc3QgaW52ZXJ0ZWRQcm9taXNlQ3JlYXRpb24g
PSBhd2FpdCBmbih0cnVlLCBmYWxzZSwgZmFsc2UpOwogIGNvbnN0IGludmVydGVkQ2FsbHMgPSBh
d2FpdCBmbihmYWxzZSwgdHJ1ZSwgZmFsc2UpOwogIGNvbnN0IGludmVydGVkUmVzb2x2ZSA9IGF3
YWl0IGZuKGZhbHNlLCBmYWxzZSwgdHJ1ZSk7CgogIGlmIChub0NoYW5nZXMgIT09IGludmVydGVk
UHJvbWlzZUNyZWF0aW9uKSB7CiAgICBhbGVydCgnUHJvbWlzZSBjcmVhdGlvbiBvcmRlciBhZmZl
Y3RzICcgKyBtb2RlKTsKICB9CgogIGlmIChub0NoYW5nZXMgIT09IGludmVydGVkQ2FsbHMpIHsK
ICAgIGFsZXJ0KGtpbmQgKyAnIG9yZGVyIGFmZmVjdHMgJyArIG1vZGUpOwogIH0KCiAgaWYgKG5v
Q2hhbmdlcyAhPT0gaW52ZXJ0ZWRSZXNvbHZlKSB7CiAgICBhbGVydCgncmVzb2x2ZSgpIG9yZGVy
IGFmZmVjdHMgJyArIG1vZGUpOwogIH0KfQoKYXN5bmMgZnVuY3Rpb24gbWFpbigpIHsKICBhd2Fp
dCB0ZXN0U2FmYXJpRmlyZUZveEJ1ZygpOwogIGF3YWl0IHRlc3RTYWZhcmlGaXJlRm94QnVnX3By
b21pc2VzKCk7CiAgYXdhaXQgdGVzdCh0ZXN0QXN5bmNPcmRlciwgJ2FzeW5jJywgJ2F3YWl0Jyk7
CiAgYXdhaXQgdGVzdCh0ZXN0UHJvbWlzZU9yZGVyLCAncHJvbWlzZXMnLCAndGhlbigpJyk7Cn0K
bWFpbigpOwo8L3NjcmlwdD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>