anchor.diff:  /// 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, methodNotAllowedHandler, uriMatcher) as x =
  +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)
   
  
positive.code:                     match handlers |> List.tryFind (fun (m, _) -> m = getRequestMethod request) with
                      | Some (_, h) -> h request
                      | None -> methodNotAllowedHandler allowedMethods request
                  do out.WriteByte(0uy) // TODO: write the response to the out stream
                  return! loop handlers
              | SetHandler(httpMethod, handler) ->
                  let handlers' =
  
negative.code:     let onError = new Event<exn>()
  
      let apply resources subscriptions name uriTemplate (allowedMethods: HttpMethod list) =
          let resource = new Resource<'TRequest, 'TResponse>(uriTemplate, allowedMethods, getRequestMethod, send, methodNotAllowedHandler)
          let resources' = (name, resource) :: resources
          let subscriptions' = resource.Connect(x, uriMatcher) :: subscriptions
          resources', subscriptions'
  