1. @override
Future open()

Begins listening for HTTP requests on port.

Source

@override
Future open() async {
  server = await HttpServer.bind(InternetAddress.LOOPBACK_IP_V4, port);
  server.listen((HttpRequest req) async {
    var mockReq = new MockHTTPRequest()
      ..method = req.method
      ..path = req.uri.path
      ..queryParameters = req.uri.queryParameters;

    mockReq.headers = {};
    req.headers.forEach((name, values) {
      mockReq.headers[name] = values.join(",");
    });

    if (req.contentLength > 0) {
      mockReq.body = new String.fromCharCodes(await req.first);
    }

    add(mockReq);

    if (responseQueue.length > 0) {
      var respObj = responseQueue.first;
      responseQueue.removeAt(0);

      if (respObj.statusCode == _mockConnectionFailureStatusCode) {
        // We let this one die by not responding.
        return null;
      }

      var wrappedReq = new Request(req);
      wrappedReq.respond(respObj);
    } else {
      req.response.statusCode = 200;
      req.response.close();
    }
  });
}