¿Cómo eliminar el encabezado del servidor usando middleware?

En ASP.NET Core 1.0 cada respuesta incluirá el encabezadoServer: Kestrel. Quiero eliminar este encabezado junto con otro encabezado comoX-Power-By utilizando middleware

Sé que podemos eliminar el encabezado Kestrel en la configuración del host configurando lo siguiente, pero quiero hacerlo usando middleware (en realidad, cuando tenemos Httpmodule podemos hacer esto, así que estoy aprendiendo lo mismo). Probé mi parte, no funcionó.

new WebHostBuilder()
    .UseKestrel(c => c.AddServerHeader = false)

Código probado:

public class HeaderRemoverMiddleware
{
    private readonly RequestDelegate _next;
    public HeaderRemoverMiddleware(RequestDelegate next)
    {
        _next = next;
    }

    public async Task Invoke(HttpContext httpContext)
    {
        httpContext.Response.OnStarting(callback: removeHeaders, state: httpContext);
        await _next.Invoke(httpContext);
    }

    private Task removeHeaders(object context)
    {
        var httpContext = (HttpContext)context;
        if (httpContext.Response.Headers.ContainsKey("Server"))
        {
            httpContext.Response.Headers.Remove("Server");
        }
        return Task.FromResult(0);
    }
}

public static class HeaderRemoverExtensions
{
    public static IApplicationBuilder UseServerHeaderRemover(this IApplicationBuilder builder)
    {
        return builder.UseMiddleware<HeaderRemoverMiddleware>();
    }
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta