repeated properties in object ctx
I think removing repeated properties in ctx is better.

    console.log(ctx.header === ctx.headers)
    console.log(ctx.header === ctx.request.header)
    console.log(ctx.response.req === ctx.req)
    console.log(ctx.response.res === ctx.res)
    console.log(ctx.request.req === ctx.req)
    console.log(ctx.request.res === ctx.res)
    console.log(ctx.request.URL === ctx.URL)
    etc

I think this is a better solution.
const { header, URL } = ctx.request;
