anchor.diff:                  UserSession = OwinCookieUserSession(context)
               }
   
  -    let dispatch (cb: ContextBuilder) (s: Sitelet<'T>) (context: IOwinContext) : option<Task> =
  +    let dispatch (cb: ContextBuilder) (s: Sitelet<'T>) (context: IOwinContext) (httpContext: HttpContext) : option<Task> =
           try
               let request = O2W.Request context.Request
  -            let ctx = cb.GetContext(s, request, context)
  +            let ctx = cb.GetContext(s, request, context, httpContext)
               s.Router.Route(request)
               |> Option.map (fun action ->
                   let content = s.Controller.Handle(action)
  
positive.code: 
          let WriteResponse (resp: Task<Http.Response>) (out: IOwinResponse) =
              resp.ContinueWith(fun (t: Task<Http.Response>) ->
                  try
                      match t.Exception with
                      | null ->
                          let resp = t.Result
                          out.StatusCode <- resp.Status.Code
                          for name, hs in resp.Headers |> Seq.groupBy (fun h -> h.Name) do
                              out.Headers.AppendValues(name, [| for h in hs -> h.Value |])
                          let str = new MemoryStream()
                          resp.WriteBody(str :> _)
                          out.Write(str.ToArray())
                      | e ->
                          out.Write(sprintf "%A" e)
                  with e ->
                      out.Write(sprintf "%A" e)
              )
  
  
negative.code:                     return refresh null
                  }
  
      let mkEnv (owinContext: IOwinContext) (httpContext: HttpContext) =
          let m = Map.add OwinContextKey (box owinContext) Map.empty
          match httpContext with
          | null -> m
          | x -> Map.add HttpContextKey (box (HttpContextWrapper(x))) m
  
      [<Sealed>]
      type ContextBuilder(cfg) =
          let info = cfg.Metadata
  