public void Configuration(Owin.IAppBuilder app)
        {
            // using Owin; you can use UseRequestScopeContext extension method.
            // enabled timing is according to Pipeline.
            // so I recommend enable as far in advance as possible.
            app.UseRequestScopeContext();

            app.UseErrorPage();
            app.Run(async _ =>
            {
                // get global context like HttpContext.Current.
                var context = OwinRequestScopeContext.Current;

                // Environment is raw Owin Environment as IDictionary<string, object>.
                var __ = context.Environment;

                // optional:If you want to change Microsoft.Owin.OwinContext, you can wrap.
                new Microsoft.Owin.OwinContext(context.Environment);

                // Timestamp is request started(correctly called RequestScopeContextMiddleware timing).
                var ___ = context.Timestamp;

                // Items is IDictionary<string, object> like HttpContext#Items.
                // Items is threadsafe(as ConcurrentDictionary) by default.
                var ____ = context.Items;

                // DisposeOnPipelineCompleted can register dispose when request finished(correctly RequestScopeContextMiddleware underling Middlewares finished)
                // return value is cancelToken. If call token.Dispose() then canceled register.
                var cancelToken = context.DisposeOnPipelineCompleted(new TraceDisposable());

                // OwinRequestScopeContext over async/await also ConfigureAwait(false)
                context.Items["test"] = "foo";
                await Task.Delay(TimeSpan.FromSeconds(1)).ConfigureAwait(false);
                var _____ = OwinRequestScopeContext.Current.Items["test"]; // foo

                await Task.Run(() =>
                {
                    // OwinRequestScopeContext over new thread/threadpool.
                    var ______ = OwinRequestScopeContext.Current.Items["test"]; // foo
                });

                _.Response.ContentType = "text/plain";
                await _.Response.WriteAsync("Hello OwinRequestScopeContext! => ");
                await _.Response.WriteAsync(OwinRequestScopeContext.Current.Items["test"] as string); // render foo
            });
        }