title: Split async method into two for code analysis?
body: <p>I have code:</p>
  
  <pre><code>public async Task DeleteColorSchemeAsync(ColorScheme colorScheme)
  {
      if (colorScheme == null)
          throw new ArgumentNullException(nameof(colorScheme));
  
      if (colorScheme.IsDefault)
          throw new SettingIsDefaultException();
  
      _dbContext.ColorSchemes.Remove(colorScheme);
      await _dbContext.SaveChangesAsync();
  }
  </code></pre>
  
  <p>One code analyzer recommends me to split this method to 2 methods:</p>
  
  <blockquote>
    <p>Split this method into two, one handling parameters check and the other handling the asynchronous code</p>
  </blockquote>
  
  <p>Am I correct, when I split this code in the following way?</p>
  
  <pre><code>public async Task DeleteColorSchemeAsync(ColorScheme colorScheme)
  {
      if (colorScheme == null)
          throw new ArgumentNullException(nameof(colorScheme));
  
      if (colorScheme.IsDefault)
          throw new SettingIsDefaultException();
  
      await DeleteColorSchemeInternalAsync(colorScheme);
  }
  
  private async Task DeleteColorSchemeInternalAsync(ColorScheme colorScheme)
  {
      _dbContext.ColorSchemes.Remove(colorScheme);
      await _dbContext.SaveChangesAsync();
  }
  </code></pre>
  
  <p>What is different for the compiler? It sees two async methods, what is different from my first variant?</p>
  
  <p>used code tool analyzator: sonarqube</p>