title: Does a async function which returns Promise<void> have an implicit return at the end of a block?
body: <pre><code>public async demo(): Promise&lt;void&gt; {
      // Do some stuff here
      // Doing more stuff
      // ... 
      // End of block without return;
  }
  </code></pre>
  
  <p>Is a new <code>Promise&lt;void&gt;</code> returned implicitely at the end of the block in TypeScript/ES6?</p>
  
  <p>Example for boolean type:</p>
  
  <pre><code>class Test {
  
      public async test(): Promise&lt;boolean&gt; {
          return true;
      }
  
      public main(): void {
  
          this.test().then((data: boolean) =&gt; {
  
              console.log(data);
  
          });
  
      }
  
  }
  
  new Test().main();
  </code></pre>
  
  <p>This prints <code>true</code> to the console because a <code>return</code> inside of a async function creates a new <code>Promise</code> and calls <code>resolve()</code> on it with the returned data. What happens with a <code>Promise&lt;void&gt;</code>?</p>