Skip to content

Error thrown on async refactoring #27301

Closed

Description

function delay(millis: number): Promise<void> {
    throw "no"
}

main();

function main() {
    console.log("Please wait. Loading.");
    return delay(500)
        .then(() => console.log("."))
        .then(() => delay(500))
        .then(() => console.log("."))
        .then(() => delay(500))
        .then(() => console.log("."))
        .then(() => delay(500))
        .then(() => console.log("All done!"));
}

function main2() {
    console.log("Please wait. Loading.");
    return delay(500)
        .then(() => { console.log("."); return delay(500); })
        .then(() => { console.log("."); return delay(500); })
        .then(() => { console.log("."); return delay(500); })
}

Try to refactor main and main2 to async functions, and expect them to look relatively identical.

Instead, refactoring main2 causes the following error

[Error  - 10:33:36 AM] 'getCodeFixes' request failed with error.
Error processing request. Cannot read property 'identifier' of undefined
TypeError: Cannot read property 'identifier' of undefined
    at getTransformationBody (C:\Users\Daniel\AppData\Local\nvs\node\10.4.1\x64\node_modules\typescript\lib\tsserver.js:107213:72)
    at transformThen (C:\Users\Daniel\AppData\Local\nvs\node\10.4.1\x64\node_modules\typescript\lib\tsserver.js:107126:38)
    at transformExpression (C:\Users\Daniel\AppData\Local\nvs\node\10.4.1\x64\node_modules\typescript\lib\tsserver.js:107061:24)
    at transformExpression (C:\Users\Daniel\AppData\Local\nvs\node\10.4.1\x64\node_modules\typescript\lib\tsserver.js:107067:24)
    at transformThen (C:\Users\Daniel\AppData\Local\nvs\node\10.4.1\x64\node_modules\typescript\lib\tsserver.js:107135:20)
    at transformExpression (C:\Users\Daniel\AppData\Local\nvs\node\10.4.1\x64\node_modules\typescript\lib\tsserver.js:107061:24)
    at startTransformation (C:\Users\Daniel\AppData\Local\nvs\node\10.4.1\x64\node_modules\typescript\lib\tsserver.js:106889:32)
    at visit (C:\Users\Daniel\AppData\Local\nvs\node\10.4.1\x64\node_modules\typescript\lib\tsserver.js:106895:25)
    at visitNode (C:\Users\Daniel\AppData\Local\nvs\node\10.4.1\x64\node_modules\typescript\lib\tsserver.js:15841:24)
    at Object.forEachChild (C:\Users\Daniel\AppData\Local\nvs\node\10.4.1\x64\node_modules\typescript\lib\tsserver.js:16116:24)
    at _loop_10 (C:\Users\Daniel\AppData\Local\nvs\node\10.4.1\x64\node_modules\typescript\lib\tsserver.js:106893:20)
    at convertToAsyncFunction (C:\Users\Daniel\AppData\Local\nvs\node\10.4.1\x64\node_modules\typescript\lib\tsserver.js:106904:17)
    at C:\Users\Daniel\AppData\Local\nvs\node\10.4.1\x64\node_modules\typescript\lib\tsserver.js:106853:96
    at Function.ChangeTracker.with (C:\Users\Daniel\AppData\Local\nvs\node\10.4.1\x64\node_modules\typescript\lib\tsserver.js:105472:17)
    at Object.getCodeActions (C:\Users\Daniel\AppData\Local\nvs\node\10.4.1\x64\node_modules\typescript\lib\tsserver.js:106853:64)
    at C:\Users\Daniel\AppData\Local\nvs\node\10.4.1\x64\node_modules\typescript\lib\tsserver.js:106422:121
    at Object.flatMap (C:\Users\Daniel\AppData\Local\nvs\node\10.4.1\x64\node_modules\typescript\lib\tsserver.js:499:25)
    at Object.getFixes (C:\Users\Daniel\AppData\Local\nvs\node\10.4.1\x64\node_modules\typescript\lib\tsserver.js:106422:23)
    at C:\Users\Daniel\AppData\Local\nvs\node\10.4.1\x64\node_modules\typescript\lib\tsserver.js:115142:35
    at Object.flatMap (C:\Users\Daniel\AppData\Local\nvs\node\10.4.1\x64\node_modules\typescript\lib\tsserver.js:499:25)
    at Object.getCodeFixesAtPosition (C:\Users\Daniel\AppData\Local\nvs\node\10.4.1\x64\node_modules\typescript\lib\tsserver.js:115140:23)
    at IOSession.Session.getCodeFixes (C:\Users\Daniel\AppData\Local\nvs\node\10.4.1\x64\node_modules\typescript\lib\tsserver.js:122942:64)
    at Session.handlers.ts.createMapFromTemplate._a.(anonymous function) (C:\Users\Daniel\AppData\Local\nvs\node\10.4.1\x64\node_modules\typescript\lib\tsserver.js:121806:61)
    at C:\Users\Daniel\AppData\Local\nvs\node\10.4.1\x64\node_modules\typescript\lib\tsserver.js:123099:88
    at IOSession.Session.executeWithRequestId (C:\Users\Daniel\AppData\Local\nvs\node\10.4.1\x64\node_modules\typescript\lib\tsserver.js:123090:28)
    at IOSession.Session.executeCommand (C:\Users\Daniel\AppData\Local\nvs\node\10.4.1\x64\node_modules\typescript\lib\tsserver.js:123099:33)
    at IOSession.Session.onMessage (C:\Users\Daniel\AppData\Local\nvs\node\10.4.1\x64\node_modules\typescript\lib\tsserver.js:123119:35)
    at Interface.<anonymous> (C:\Users\Daniel\AppData\Local\nvs\node\10.4.1\x64\node_modules\typescript\lib\tsserver.js:124383:27)
    at emitOne (events.js:116:13)
    at Interface.emit (events.js:211:7)
    at Interface._onLine (readline.js:282:10)
    at Interface._normalWrite (readline.js:424:12)
    at Socket.ondata (readline.js:141:10)
    at emitOne (events.js:116:13)
    at Socket.emit (events.js:211:7)
    at addChunk (_stream_readable.js:263:12)
    at readableAddChunk (_stream_readable.js:250:11)
    at Socket.Readable.push (_stream_readable.js:208:10)
    at Pipe.onread (net.js:594:20)

Activity

  1. dhruvrajvanshi commented on Sep 24, 2018

    @dhruvrajvanshi
    Contributor

    Can I take a shot at this?

  2. DanielRosenwasser commented on Sep 25, 2018

    @DanielRosenwasser
    MemberAuthor

    Maybe! Ben Lichtman (@uniqueiniquity) can give some context on how approachable this would be to tackle.

  3. uniqueiniquity commented on Sep 25, 2018

    @uniqueiniquity
    Contributor

    Dhruv Rajvanshi (@dhruvrajvanshi) Thanks for offering to look at this! This seems pretty approachable to me.
    I'd start by walking down the exception call stack starting with startTransformation to get a sense of what part of main2 is causing the issue, and then going from there. Let me know if there's anything I can help with!

  4. uniqueiniquity commented on Sep 25, 2018

    @uniqueiniquity
    Contributor

    Also, let me know if you think you won't be able to get to it, and I can take over.

  5. dhruvrajvanshi commented on Sep 27, 2018

    @dhruvrajvanshi
    Contributor

    Ben Lichtman (@uniqueiniquity) I've made the fix and opened a PR. Please review.

    Sorry it took me a while to figure out how to write the test for this :|

    The issue was that the last callback didn't have an argument and a not null ! assertion was being used to
    cast it away.

  6. ghost closed this as completedin #27396on Sep 28, 2018
  7. ghost added a commit that references this issue on Sep 28, 2018
  8. added a commit that references this issue on Oct 9, 2018
  9. DanielRosenwasser commented on Oct 11, 2018

    @DanielRosenwasser
    MemberAuthor

    3.1 fix is in 045c73a

  10. locked as resolved and limited conversation to collaborators on Oct 21, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

BugA bug in TypeScriptDomain: LS: Refactoringse.g. extract to constant or function, rename symbol

Type

No type

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions