ensureTerminal should return Promise<Terminal> rather than Promise<void>. This way we dont have to have the TerminalService class save the state of Terminal. Could even potentially look at getting rid of TerminalService.