From @DennisKehrig 

For convenience, return both a promise and a language.
Maybe this is a good idea for LanguageManager.defineLanguage(), too?
Or maybe we want to go in the opposite direction, i.e. make sure that a language is only registered (via ID, mode or file extensions) once it's fully specified. I.e. we'd wait with registering it until just before we resolve the promise in defineLanguage to make this basically an atomic operation and not have "incomplete" languages lying around.