pub async fn server_loop<A, H, F, E>(
    server_name: String,
    listener: A,
    handler: H,
    must_exit: Receiver<bool>
) -> Result<(), GarageError>
where A: Accept, H: Fn(Request<Incoming>, String) -> F + Send + Sync + Clone + 'static, F: Future<Output = Result<Response<BoxBody<E>>, Error>> + Send + 'static, E: Send + Sync + Error + 'static,