/// <summary>
            /// Asynchronously renders the view using the specified <paramref name="context" />.
            /// </summary>
            /// <param name="context">The <see cref="T:Microsoft.AspNet.Mvc.Rendering.ViewContext" />.</param>
            /// <returns>
            /// A <see cref="T:System.Threading.Tasks.Task" /> that on completion renders the view.
            /// </returns>
            public async Task RenderAsync(ViewContext context)
            {
                var jsEngine = context.HttpContext.Request.HttpContext.Items["JsEngine"] as IJsEngine;

                if (jsEngine == null)
                {
                    throw new Exception("Couldn't get IJsEngine from the context request items.");
                }

                var result = await _jsEngineInvoker.InvokeEngine(jsEngine, ViewType, Path, context);

                if (ViewType == ViewType.Full)
                {
                    if (!string.IsNullOrEmpty(result.Redirect))
                    {
                        context.HttpContext.Response.Redirect(result.Redirect);
                        return;
                    }
                    context.HttpContext.Response.StatusCode = result.Status;
                    await context.Writer.WriteAsync(result.Html);
                }
                else
                {
                    await context.Writer.WriteAsync(result.Html);
                }
            }