2017
DOI: 10.1145/3133910
|View full text |Cite
|
Sign up to set email alerts
|

A model for reasoning about JavaScript promises

Abstract: In JavaScript programs, asynchrony arises in situations such as web-based user-interfaces, communicating with servers through HTTP requests, and non-blocking I/O. Event-based programming is the most popular approach for managing asynchrony, but suffers from problems such as lost events and event races, and results in code that is hard to understand and debug. Recently, ECMAScript 6 has added support for promises, an alternative mechanism for managing asynchrony that enables programmers to chain asynchronous co… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
3
1
1

Citation Types

0
27
0

Year Published

2018
2018
2023
2023

Publication Types

Select...
4
3

Relationship

1
6

Authors

Journals

citations
Cited by 31 publications
(27 citation statements)
references
References 27 publications
0
27
0
Order By: Relevance
“…As a result, developers often make mistakes while creating, settling, linking, and synchronizing various promise objects. As such, common error-prone patterns manifest in promise-based JavaScript applications [Madsen et al 2017]. We use three examples, presented in Figures 1ś6, to illustrate the challenging nature of understanding and debugging promise-based code.…”
Section: Challenges and Motivationmentioning
confidence: 99%
See 3 more Smart Citations
“…As a result, developers often make mistakes while creating, settling, linking, and synchronizing various promise objects. As such, common error-prone patterns manifest in promise-based JavaScript applications [Madsen et al 2017]. We use three examples, presented in Figures 1ś6, to illustrate the challenging nature of understanding and debugging promise-based code.…”
Section: Challenges and Motivationmentioning
confidence: 99%
“…In this section, we define the notion of a promise graph. Our definition is based on the original definition of a promise graph by Madsen et al [Madsen et al 2017], but a key difference is that our promise graphs are computed using dynamic analysis, whereas the definition by Madsen et al is assumed to be computed using static analysis 11 . To emphasize this distinction, we will henceforth use the term static promise graphs to refer to the static notion proposed by Madsen et al, and dynamic promise graphs to refer to the dynamic notion used in the present paper.…”
Section: The Promise Graphmentioning
confidence: 99%
See 2 more Smart Citations
“…A solution to the split-phase problem for desktop so ware has been language support for coroutines (Conway 1963;Knuth 1997;Marlin 1979) and promises (Brodu et al 2015;Liskov and Shrira 1988;Madsen et al 2017). For example, in C#, JavaScript, and Python, developers can use an "await" keyword to wait on an external event.…”
Section: Introductionmentioning
confidence: 99%