{"id":"https://openalex.org/W3206419348","doi":"https://doi.org/10.1145/3485537","title":"Automatic migration from synchronous to asynchronous JavaScript APIs","display_name":"Automatic migration from synchronous to asynchronous JavaScript APIs","publication_year":2021,"publication_date":"2021-10-15","ids":{"openalex":"https://openalex.org/W3206419348","doi":"https://doi.org/10.1145/3485537","mag":"3206419348"},"language":"en","primary_location":{"id":"doi:10.1145/3485537","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3485537","pdf_url":"https://dl.acm.org/doi/pdf/10.1145/3485537","source":{"id":"https://openalex.org/S4210216081","display_name":"Proceedings of the ACM on Programming Languages","issn_l":"2475-1421","issn":["2475-1421"],"is_oa":true,"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":"cc-by","license_id":"https://openalex.org/licenses/cc-by","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":"diamond","oa_url":"https://dl.acm.org/doi/pdf/10.1145/3485537","any_repository_has_fulltext":false},"authorships":[{"author_position":"first","author":{"id":"https://openalex.org/A5074998003","display_name":"Satyajit Gokhale","orcid":null},"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":true,"raw_author_name":"Satyajit Gokhale","raw_affiliation_strings":["Northeastern University, USA"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"Northeastern University, USA","institution_ids":["https://openalex.org/I12912129"]}]},{"author_position":"middle","author":{"id":"https://openalex.org/A5024866221","display_name":"Alexi Turcotte","orcid":"https://orcid.org/0000-0002-0381-0477"},"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":"Alexi Turcotte","raw_affiliation_strings":["Northeastern University, USA"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"Northeastern University, USA","institution_ids":["https://openalex.org/I12912129"]}]},{"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":1,"institutions_distinct_count":3,"corresponding_author_ids":["https://openalex.org/A5074998003"],"corresponding_institution_ids":["https://openalex.org/I12912129"],"apc_list":null,"apc_paid":null,"fwci":4.2659,"has_fulltext":true,"cited_by_count":20,"citation_normalized_percentile":{"value":0.94691609,"is_in_top_1_percent":false,"is_in_top_10_percent":true},"cited_by_percentile_year":{"min":97,"max":98},"biblio":{"volume":"5","issue":"OOPSLA","first_page":"1","last_page":"27"},"is_retracted":false,"is_paratext":false,"is_xpac":false,"primary_topic":{"id":"https://openalex.org/T10260","display_name":"Software Engineering Research","score":0.9976000189781189,"subfield":{"id":"https://openalex.org/subfields/1710","display_name":"Information Systems"},"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/T10260","display_name":"Software Engineering Research","score":0.9976000189781189,"subfield":{"id":"https://openalex.org/subfields/1710","display_name":"Information Systems"},"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/T10126","display_name":"Logic, programming, and type systems","score":0.9962999820709229,"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/T10743","display_name":"Software Testing and Debugging Techniques","score":0.9948999881744385,"subfield":{"id":"https://openalex.org/subfields/1712","display_name":"Software"},"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.8723509907722473},{"id":"https://openalex.org/keywords/asynchronous-communication","display_name":"Asynchronous communication","score":0.8620086312294006},{"id":"https://openalex.org/keywords/javascript","display_name":"JavaScript","score":0.7411611080169678},{"id":"https://openalex.org/keywords/code-refactoring","display_name":"Code refactoring","score":0.7317487597465515},{"id":"https://openalex.org/keywords/callback","display_name":"Callback","score":0.6270002126693726},{"id":"https://openalex.org/keywords/programming-language","display_name":"Programming language","score":0.6008447408676147},{"id":"https://openalex.org/keywords/programmer","display_name":"Programmer","score":0.5127400159835815},{"id":"https://openalex.org/keywords/distributed-computing","display_name":"Distributed computing","score":0.3883407413959503},{"id":"https://openalex.org/keywords/software","display_name":"Software","score":0.14532679319381714},{"id":"https://openalex.org/keywords/computer-network","display_name":"Computer network","score":0.11500921845436096}],"concepts":[{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.8723509907722473},{"id":"https://openalex.org/C151319957","wikidata":"https://www.wikidata.org/wiki/Q752739","display_name":"Asynchronous communication","level":2,"score":0.8620086312294006},{"id":"https://openalex.org/C544833334","wikidata":"https://www.wikidata.org/wiki/Q2005","display_name":"JavaScript","level":2,"score":0.7411611080169678},{"id":"https://openalex.org/C152752567","wikidata":"https://www.wikidata.org/wiki/Q116877","display_name":"Code refactoring","level":3,"score":0.7317487597465515},{"id":"https://openalex.org/C204495577","wikidata":"https://www.wikidata.org/wiki/Q1205349","display_name":"Callback","level":2,"score":0.6270002126693726},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.6008447408676147},{"id":"https://openalex.org/C2778514511","wikidata":"https://www.wikidata.org/wiki/Q1374194","display_name":"Programmer","level":2,"score":0.5127400159835815},{"id":"https://openalex.org/C120314980","wikidata":"https://www.wikidata.org/wiki/Q180634","display_name":"Distributed computing","level":1,"score":0.3883407413959503},{"id":"https://openalex.org/C2777904410","wikidata":"https://www.wikidata.org/wiki/Q7397","display_name":"Software","level":2,"score":0.14532679319381714},{"id":"https://openalex.org/C31258907","wikidata":"https://www.wikidata.org/wiki/Q1301371","display_name":"Computer network","level":1,"score":0.11500921845436096}],"mesh":[],"locations_count":1,"locations":[{"id":"doi:10.1145/3485537","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3485537","pdf_url":"https://dl.acm.org/doi/pdf/10.1145/3485537","source":{"id":"https://openalex.org/S4210216081","display_name":"Proceedings of the ACM on Programming Languages","issn_l":"2475-1421","issn":["2475-1421"],"is_oa":true,"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":"cc-by","license_id":"https://openalex.org/licenses/cc-by","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/3485537","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3485537","pdf_url":"https://dl.acm.org/doi/pdf/10.1145/3485537","source":{"id":"https://openalex.org/S4210216081","display_name":"Proceedings of the ACM on Programming Languages","issn_l":"2475-1421","issn":["2475-1421"],"is_oa":true,"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":"cc-by","license_id":"https://openalex.org/licenses/cc-by","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":[],"awards":[{"id":"https://openalex.org/G6382143836","display_name":null,"funder_award_id":"CCF-1715153, CCF-190772","funder_id":"https://openalex.org/F4320306076","funder_display_name":"National Science Foundation"},{"id":"https://openalex.org/G7261627640","display_name":null,"funder_award_id":"PGSD-518834-2018","funder_id":"https://openalex.org/F4320334593","funder_display_name":"Natural Sciences and Engineering Research Council of Canada"}],"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/W3206419348.pdf","grobid_xml":"https://content.openalex.org/works/W3206419348.grobid-xml"},"referenced_works_count":17,"referenced_works":["https://openalex.org/W2023753091","https://openalex.org/W2043732148","https://openalex.org/W2056659466","https://openalex.org/W2100283823","https://openalex.org/W2132231921","https://openalex.org/W2144778294","https://openalex.org/W2148189199","https://openalex.org/W2154563336","https://openalex.org/W2243423430","https://openalex.org/W2287454111","https://openalex.org/W2543953340","https://openalex.org/W2761442781","https://openalex.org/W2767646260","https://openalex.org/W2889404430","https://openalex.org/W2951985317","https://openalex.org/W3003638206","https://openalex.org/W3082212141"],"related_works":["https://openalex.org/W2613684332","https://openalex.org/W4313549863","https://openalex.org/W2737171366","https://openalex.org/W2358077438","https://openalex.org/W2502475670","https://openalex.org/W4206210324","https://openalex.org/W2583473510","https://openalex.org/W2615381372","https://openalex.org/W4284698742","https://openalex.org/W2488213809"],"abstract_inverted_index":{"The":[0,118,174],"JavaScript":[1],"ecosystem":[2],"provides":[3],"equivalent":[4],"synchronous":[5,97,114,129,193],"and":[6,31,56,71,169,212],"asynchronous":[7,86,116,137],"Application":[8],"Programming":[9],"Interfaces":[10],"(APIs)":[11],"for":[12,107,203],"many":[13,92],"commonly":[14],"used":[15],"I/O":[16,75],"operations.":[17],"Synchronous":[18],"APIs":[19,45,87],"involve":[20],"straightforward":[21],"sequential":[22],"control":[23],"flow":[24],"that":[25,51,85,165,225],"makes":[26],"them":[27],"easy":[28],"to":[29,68,115,124,128,144,147,234],"use":[30],"understand,":[32],"but":[33],"their":[34,63,136],"\"blocking\"":[35],"behavior":[36,65],"may":[37],"result":[38],"in":[39,178,216,236],"poor":[40],"responsiveness":[41],"or":[42],"performance.":[43],"Asynchronous":[44],"impose":[46],"a":[47,104,179],"higher":[48],"syntactic":[49],"burden":[50],"relies":[52,120],"on":[53,96,121,140,187],"callbacks,":[54],"promises,":[55],"higher-order":[57],"functions.":[58],"On":[59],"the":[60,111,148,152,158,172,226,237],"other":[61],"hand,":[62],"nonblocking":[64],"enables":[66],"applications":[67,93,190],"scale":[69],"better":[70,89],"remain":[72],"responsive":[73],"while":[74],"requests":[76],"are":[77,161],"being":[78],"processed.":[79],"While":[80],"it":[81],"is":[82,155],"generally":[83],"understood":[84],"have":[88],"performance":[90],"characteristics,":[91],"still":[94],"rely":[95],"APIs.":[98,117],"In":[99,183],"this":[100],"paper,":[101],"we":[102],"present":[103],"refactoring":[105],"technique":[106,119,175],"assisting":[108],"programmers":[109],"with":[110,135],"migration":[112],"from":[113],"static":[122,153],"analysis":[123,154],"determine":[125],"where":[126],"calls":[127],"API":[130,194],"functions":[131],"can":[132,231],"be":[133,167,232],"replaced":[134],"counterparts,":[138],"relying":[139],"JavaScript's":[141],"async/await":[142],"feature":[143],"minimize":[145],"disruption":[146],"source":[149],"code.":[150],"Since":[151],"potentially":[156],"unsound,":[157],"proposed":[159],"refactorings":[160],"presented":[162],"as":[163,201],"suggestions":[164],"must":[166],"reviewed":[168],"confirmed":[170],"by":[171],"programmer.":[173],"was":[176],"implemented":[177],"tool":[180],"named":[181],"Desynchronizer.":[182],"an":[184],"empirical":[185],"evaluation":[186],"12":[188,214],"subject":[189],"containing":[191],"316":[192],"calls,":[195],"Desynchronizer":[196],"identified":[197],"256":[198],"of":[199,221,228],"these":[200,206,222,229],"candidates":[202],"refactoring.":[204],"Of":[205],"candidates,":[207],"244":[208],"were":[209],"transformed":[210],"successfully,":[211],"only":[213],"resulted":[215],"behavioral":[217],"changes.":[218],"Further":[219],"inspection":[220],"cases":[223],"revealed":[224],"majority":[227],"issues":[230],"attributed":[233],"unsoundness":[235],"call":[238],"graph.":[239]},"counts_by_year":[{"year":2025,"cited_by_count":5},{"year":2024,"cited_by_count":6},{"year":2023,"cited_by_count":5},{"year":2022,"cited_by_count":4}],"updated_date":"2026-05-21T06:26:12.895304","created_date":"2025-10-10T00:00:00"}
