anchor.diff:      | Shutdown
   
   /// An HTTP resource agent.
  -type Resource<'TRequest, 'TResponse> private (uriTemplate, allowedMethods, handlers, getRequestMethod, methodNotAllowedHandler) =
  +type Resource<'TRequest, 'TResponse> private (uriTemplate, allowedMethods, handlers, getRequestMethod, send, methodNotAllowedHandler) =
       let onError = new Event<exn>()
       let agent = Agent<ResourceMessage<'TRequest, 'TResponse>>.Start(fun inbox ->
           let rec loop handlers = async {
  
positive.code:     let onError = new Event<exn>()
  
      let apply resources subscriptions name uriTemplate (allowedMethods: HttpMethod list) =
          let resource = new Resource<'TRequest, 'TResponse>(uriTemplate, allowedMethods, getRequestMethod, methodNotAllowedHandler)
          let resources' = (name, resource) :: resources
          let subscriptions' = resource.Connect(x, uriMatcher) :: subscriptions
          resources', subscriptions'
  
negative.code: /// A type provider could make this much nicer, e.g.:
  ///     let app = ResourceManager<"path/to/spec/as/string">
  ///     app.Root.Get(fun request -> async { return response })
  type ResourceManager<'TRequest, 'TResponse, 'TRoute when 'TRoute : equality>(routeSpec: RouteSpec<'TRoute>, getRequestMethod, send, methodNotAllowedHandler, uriMatcher) as x =
      // Should this also be an Agent<'T>?
      inherit Dictionary<'TRoute, Resource<'TRequest, 'TResponse>>(HashIdentity.Structural)
  
  