Alterando o Objeto de Resposta do OWIN Middleware

Meu middleware OWIN é assim. (Framework é ASP.NET Web API).

public class MyMiddleware : OwinMiddleware
{
    public MyMiddleware(OwinMiddleware next) : base(next) { }

    public override async Task Invoke(OwinRequest request, OwinResponse response)
    {
        var header = request.GetHeader("X-Whatever-Header");

        await Next.Invoke(request, response);

        response.SetHeader("X-MyResponse-Header", "Some Value");
        response.StatusCode = 403;

    }
}

Questões:

É a prática recomendada para derivar deOwinMiddleware? Eu vejo que na fonte de Katana, algumas das classes de middleware derivamOwinMiddleware e alguns não.

Eu posso ver os cabeçalhos da solicitação bem. Configurando o cabeçalho de resposta ou o código de status apósNext.Invoke no meu middleware não tem efeito sobre a resposta retornada para o cliente. Mas se eu definir o cabeçalho de resposta ou status antes doNext.Invoke chamada, a resposta com cabeçalhos e o status que eu configuro são retornados para o cliente. Qual é o caminho certo para defini-las?

questionAnswers(2)

yourAnswerToTheQuestion