{"id":"https://openalex.org/W2761442781","doi":"https://doi.org/10.1145/3133910","title":"A model for reasoning about JavaScript promises","display_name":"A model for reasoning about JavaScript promises","publication_year":2017,"publication_date":"2017-10-12","ids":{"openalex":"https://openalex.org/W2761442781","doi":"https://doi.org/10.1145/3133910","mag":"2761442781"},"language":"en","primary_location":{"id":"doi:10.1145/3133910","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3133910","pdf_url":"https://dl.acm.org/doi/pdf/10.1145/3133910","source":{"id":"https://openalex.org/S4210216081","display_name":"Proceedings of the ACM on Programming Languages","issn_l":"2475-1421","issn":["2475-1421"],"is_oa":false,"is_in_doaj":false,"is_core":true,"host_organization":"https://openalex.org/P4310319798","host_organization_name":"Association for Computing Machinery","host_organization_lineage":["https://openalex.org/P4310319798"],"host_organization_lineage_names":["Association for Computing Machinery"],"type":"journal"},"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the ACM on Programming Languages","raw_type":"journal-article"},"type":"article","indexed_in":["crossref"],"open_access":{"is_oa":true,"oa_status":"bronze","oa_url":"https://dl.acm.org/doi/pdf/10.1145/3133910","any_repository_has_fulltext":false},"authorships":[{"author_position":"first","author":{"id":"https://openalex.org/A5034330109","display_name":"Magnus Madsen","orcid":"https://orcid.org/0000-0002-7510-8724"},"institutions":[{"id":"https://openalex.org/I151746483","display_name":"University of Waterloo","ror":"https://ror.org/01aff2v68","country_code":"CA","type":"education","lineage":["https://openalex.org/I151746483"]}],"countries":["CA"],"is_corresponding":true,"raw_author_name":"Magnus Madsen","raw_affiliation_strings":["University of Waterloo, Canada"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"University of Waterloo, Canada","institution_ids":["https://openalex.org/I151746483"]}]},{"author_position":"middle","author":{"id":"https://openalex.org/A5039616179","display_name":"Ond\u0159ej Lhot\u00e1k","orcid":"https://orcid.org/0000-0001-9066-1889"},"institutions":[{"id":"https://openalex.org/I151746483","display_name":"University of Waterloo","ror":"https://ror.org/01aff2v68","country_code":"CA","type":"education","lineage":["https://openalex.org/I151746483"]}],"countries":["CA"],"is_corresponding":false,"raw_author_name":"Ond\u0159ej Lhot\u00e1k","raw_affiliation_strings":["University of Waterloo, Canada"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"University of Waterloo, Canada","institution_ids":["https://openalex.org/I151746483"]}]},{"author_position":"last","author":{"id":"https://openalex.org/A5087594876","display_name":"Frank Tip","orcid":"https://orcid.org/0000-0002-1862-3498"},"institutions":[{"id":"https://openalex.org/I12912129","display_name":"Northeastern University","ror":"https://ror.org/04t5xt781","country_code":"US","type":"education","lineage":["https://openalex.org/I12912129"]}],"countries":["US"],"is_corresponding":false,"raw_author_name":"Frank Tip","raw_affiliation_strings":["Northeastern University, USA"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"Northeastern University, USA","institution_ids":["https://openalex.org/I12912129"]}]}],"institutions":[],"countries_distinct_count":2,"institutions_distinct_count":3,"corresponding_author_ids":["https://openalex.org/A5034330109"],"corresponding_institution_ids":["https://openalex.org/I151746483"],"apc_list":null,"apc_paid":null,"fwci":3.3296,"has_fulltext":true,"cited_by_count":36,"citation_normalized_percentile":{"value":0.9392921,"is_in_top_1_percent":false,"is_in_top_10_percent":true},"cited_by_percentile_year":{"min":90,"max":99},"biblio":{"volume":"1","issue":"OOPSLA","first_page":"1","last_page":"24"},"is_retracted":false,"is_paratext":false,"is_xpac":false,"primary_topic":{"id":"https://openalex.org/T10126","display_name":"Logic, programming, and type systems","score":0.9997000098228455,"subfield":{"id":"https://openalex.org/subfields/1702","display_name":"Artificial Intelligence"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},"topics":[{"id":"https://openalex.org/T10126","display_name":"Logic, programming, and type systems","score":0.9997000098228455,"subfield":{"id":"https://openalex.org/subfields/1702","display_name":"Artificial Intelligence"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},{"id":"https://openalex.org/T11424","display_name":"Security and Verification in Computing","score":0.9993000030517578,"subfield":{"id":"https://openalex.org/subfields/1702","display_name":"Artificial Intelligence"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},{"id":"https://openalex.org/T10054","display_name":"Parallel Computing and Optimization Techniques","score":0.9973999857902527,"subfield":{"id":"https://openalex.org/subfields/1708","display_name":"Hardware and Architecture"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}}],"keywords":[{"id":"https://openalex.org/keywords/computer-science","display_name":"Computer science","score":0.8748587369918823},{"id":"https://openalex.org/keywords/debugging","display_name":"Debugging","score":0.763283371925354},{"id":"https://openalex.org/keywords/javascript","display_name":"JavaScript","score":0.7604719400405884},{"id":"https://openalex.org/keywords/correctness","display_name":"Correctness","score":0.7204197645187378},{"id":"https://openalex.org/keywords/asynchrony","display_name":"Asynchrony (computer programming)","score":0.6769106984138489},{"id":"https://openalex.org/keywords/programming-language","display_name":"Programming language","score":0.6751867532730103},{"id":"https://openalex.org/keywords/asynchronous-communication","display_name":"Asynchronous communication","score":0.5372068881988525},{"id":"https://openalex.org/keywords/event","display_name":"Event (particle physics)","score":0.49728134274482727},{"id":"https://openalex.org/keywords/web-application","display_name":"Web application","score":0.46837908029556274},{"id":"https://openalex.org/keywords/software-engineering","display_name":"Software engineering","score":0.37575212121009827},{"id":"https://openalex.org/keywords/theoretical-computer-science","display_name":"Theoretical computer science","score":0.3517730236053467},{"id":"https://openalex.org/keywords/world-wide-web","display_name":"World Wide Web","score":0.30405864119529724}],"concepts":[{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.8748587369918823},{"id":"https://openalex.org/C168065819","wikidata":"https://www.wikidata.org/wiki/Q845566","display_name":"Debugging","level":2,"score":0.763283371925354},{"id":"https://openalex.org/C544833334","wikidata":"https://www.wikidata.org/wiki/Q2005","display_name":"JavaScript","level":2,"score":0.7604719400405884},{"id":"https://openalex.org/C55439883","wikidata":"https://www.wikidata.org/wiki/Q360812","display_name":"Correctness","level":2,"score":0.7204197645187378},{"id":"https://openalex.org/C2779019669","wikidata":"https://www.wikidata.org/wiki/Q25203946","display_name":"Asynchrony (computer programming)","level":3,"score":0.6769106984138489},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.6751867532730103},{"id":"https://openalex.org/C151319957","wikidata":"https://www.wikidata.org/wiki/Q752739","display_name":"Asynchronous communication","level":2,"score":0.5372068881988525},{"id":"https://openalex.org/C2779662365","wikidata":"https://www.wikidata.org/wiki/Q5416694","display_name":"Event (particle physics)","level":2,"score":0.49728134274482727},{"id":"https://openalex.org/C118643609","wikidata":"https://www.wikidata.org/wiki/Q189210","display_name":"Web application","level":2,"score":0.46837908029556274},{"id":"https://openalex.org/C115903868","wikidata":"https://www.wikidata.org/wiki/Q80993","display_name":"Software engineering","level":1,"score":0.37575212121009827},{"id":"https://openalex.org/C80444323","wikidata":"https://www.wikidata.org/wiki/Q2878974","display_name":"Theoretical computer science","level":1,"score":0.3517730236053467},{"id":"https://openalex.org/C136764020","wikidata":"https://www.wikidata.org/wiki/Q466","display_name":"World Wide Web","level":1,"score":0.30405864119529724},{"id":"https://openalex.org/C31258907","wikidata":"https://www.wikidata.org/wiki/Q1301371","display_name":"Computer network","level":1,"score":0.0},{"id":"https://openalex.org/C121332964","wikidata":"https://www.wikidata.org/wiki/Q413","display_name":"Physics","level":0,"score":0.0},{"id":"https://openalex.org/C62520636","wikidata":"https://www.wikidata.org/wiki/Q944","display_name":"Quantum mechanics","level":1,"score":0.0}],"mesh":[],"locations_count":1,"locations":[{"id":"doi:10.1145/3133910","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3133910","pdf_url":"https://dl.acm.org/doi/pdf/10.1145/3133910","source":{"id":"https://openalex.org/S4210216081","display_name":"Proceedings of the ACM on Programming Languages","issn_l":"2475-1421","issn":["2475-1421"],"is_oa":false,"is_in_doaj":false,"is_core":true,"host_organization":"https://openalex.org/P4310319798","host_organization_name":"Association for Computing Machinery","host_organization_lineage":["https://openalex.org/P4310319798"],"host_organization_lineage_names":["Association for Computing Machinery"],"type":"journal"},"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the ACM on Programming Languages","raw_type":"journal-article"}],"best_oa_location":{"id":"doi:10.1145/3133910","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3133910","pdf_url":"https://dl.acm.org/doi/pdf/10.1145/3133910","source":{"id":"https://openalex.org/S4210216081","display_name":"Proceedings of the ACM on Programming Languages","issn_l":"2475-1421","issn":["2475-1421"],"is_oa":false,"is_in_doaj":false,"is_core":true,"host_organization":"https://openalex.org/P4310319798","host_organization_name":"Association for Computing Machinery","host_organization_lineage":["https://openalex.org/P4310319798"],"host_organization_lineage_names":["Association for Computing Machinery"],"type":"journal"},"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the ACM on Programming Languages","raw_type":"journal-article"},"sustainable_development_goals":[{"score":0.550000011920929,"display_name":"Peace, Justice and strong institutions","id":"https://metadata.un.org/sdg/16"}],"awards":[{"id":"https://openalex.org/G154579872","display_name":null,"funder_award_id":"CCF-1715153","funder_id":"https://openalex.org/F4320306076","funder_display_name":"National Science Foundation"},{"id":"https://openalex.org/G7726608270","display_name":"SHF: Small: Automated Detection and Repair of Errors in Event-Driven Applications","funder_award_id":"1715153","funder_id":"https://openalex.org/F4320306076","funder_display_name":"National Science Foundation"}],"funders":[{"id":"https://openalex.org/F4320306076","display_name":"National Science Foundation","ror":"https://ror.org/021nxhr62"},{"id":"https://openalex.org/F4320334593","display_name":"Natural Sciences and Engineering Research Council of Canada","ror":"https://ror.org/01h531d29"}],"has_content":{"grobid_xml":true,"pdf":true},"content_urls":{"pdf":"https://content.openalex.org/works/W2761442781.pdf","grobid_xml":"https://content.openalex.org/works/W2761442781.grobid-xml"},"referenced_works_count":26,"referenced_works":["https://openalex.org/W146848279","https://openalex.org/W202191487","https://openalex.org/W280881733","https://openalex.org/W1518650316","https://openalex.org/W1839269954","https://openalex.org/W1965995882","https://openalex.org/W1966862293","https://openalex.org/W1982725024","https://openalex.org/W1989147905","https://openalex.org/W2013885073","https://openalex.org/W2023168372","https://openalex.org/W2024818492","https://openalex.org/W2055931054","https://openalex.org/W2081620804","https://openalex.org/W2111946621","https://openalex.org/W2114712579","https://openalex.org/W2118431434","https://openalex.org/W2132733485","https://openalex.org/W2141018153","https://openalex.org/W2142194171","https://openalex.org/W2143603206","https://openalex.org/W2156370972","https://openalex.org/W2166150184","https://openalex.org/W2618852163","https://openalex.org/W2619950022","https://openalex.org/W3105116128"],"related_works":["https://openalex.org/W2944915449","https://openalex.org/W4214504500","https://openalex.org/W2102266661","https://openalex.org/W2122229220","https://openalex.org/W4283014255","https://openalex.org/W2737171366","https://openalex.org/W2795601048","https://openalex.org/W2403324299","https://openalex.org/W2621177934","https://openalex.org/W4286287737"],"abstract_inverted_index":{"In":[0],"JavaScript":[1,115],"programs,":[2],"asynchrony":[3,65],"arises":[4],"in":[5,43,84,173,190],"situations":[6],"such":[7,34],"as":[8,35],"web-based":[9],"user-interfaces,":[10],"communicating":[11],"with":[12,161],"servers":[13],"through":[14],"HTTP":[15],"requests,":[16],"and":[17,38,41,50,82,110],"non-blocking":[18],"I/O.":[19],"Event-based":[20],"programming":[21],"is":[22,46,108],"the":[23,98,104,138,151,178,195],"most":[24],"popular":[25],"approach":[26],"for":[27,58,63,112,124,184],"managing":[28,64],"asynchrony,":[29],"but":[30],"suffers":[31],"from":[32,92],"problems":[33],"lost":[36],"events":[37],"event":[39],"races,":[40],"results":[42],"code":[44,191],"that":[45,66,94,136,157],"hard":[47],"to":[48,69,188,194],"understand":[49],"debug.":[51],"Recently,":[52],"ECMAScript":[53,105,141],"6":[54,106,142],"has":[55],"added":[56],"support":[57],"promises,":[59],"an":[60],"alternative":[61],"mechanism":[62],"enables":[67],"programmers":[68,89,160],"chain":[70],"asynchronous":[71],"computations":[72],"while":[73],"supporting":[74],"proper":[75],"error":[76],"handling.":[77],"However,":[78],"promises":[79,189],"are":[80],"complex":[81],"error-prone":[83],"their":[85],"own":[86],"right,":[87],"so":[88],"would":[90],"benefit":[91],"techniques":[93],"can":[95,158,181],"reason":[96],"about":[97],"correctness":[99],"of":[100,114,140,163],"promise-based":[101,164],"code.":[102,165],"Since":[103],"specification":[107],"informal":[109],"intended":[111],"implementers":[113],"engines,":[116],"it":[117],"does":[118],"not":[119],"provide":[120],"a":[121,133,154,170],"suitable":[122],"basis":[123],"formal":[125],"reasoning.":[126],"This":[127],"paper":[128],"presents":[129],"\u03bb":[130,146],"p":[131,147],",":[132,148],"core":[134],"calculus":[135],"captures":[137],"essence":[139],"promises.":[143],"Based":[144],"on":[145,169],"we":[149,175],"introduce":[150],"promise":[152,179],"graph,":[153],"program":[155],"representation":[156],"assist":[159],"debugging":[162,185],"We":[166],"then":[167],"report":[168],"case":[171],"study":[172],"which":[174],"investigate":[176],"how":[177],"graph":[180],"be":[182],"helpful":[183],"errors":[186],"related":[187],"fragments":[192],"posted":[193],"StackOverflow":[196],"website.":[197]},"counts_by_year":[{"year":2025,"cited_by_count":1},{"year":2024,"cited_by_count":3},{"year":2023,"cited_by_count":5},{"year":2022,"cited_by_count":7},{"year":2021,"cited_by_count":4},{"year":2020,"cited_by_count":6},{"year":2019,"cited_by_count":9},{"year":2018,"cited_by_count":1}],"updated_date":"2026-05-21T06:26:12.895304","created_date":"2025-10-10T00:00:00"}
