I just wanted to write this down somewhere to keep it in mind but it may be useful for others to.

protected void Application_Start(Object sender, EventArgs e)
{
  //Application
  //Request
}

protected void Session_Start(Object sender, EventArgs e)
{
  //Application
  //Request
  //User
  //Session
  //Response
}

protected void Application_BeginRequest(Object sender, EventArgs e)
{
  //Application
  //Request
  //Response
}

protected void Application_PreSendRequestHeaders(Object sender, EventArgs e)
{
  //Application
  //Request
  //User
  //Session
  //Response
}

protected void Application_AuthenticateRequest(Object sender, EventArgs e)
{
  //Application
  //Request
  //User
  //Response
}

protected void Application_PostRequestHandlerExecute(Object sender, EventArgs e)
{
  //Application
  //Request
  //User
  //Session
  //Response
}

protected void Application_EndRequest(Object sender, EventArgs e)
{
  //Application
  //Request
  //User
  //Response
}

protected void Session_End(Object sender, EventArgs e)
{
  //Application
  //Request
  //User
  //Session
  //Response
}

protected void Application_Error(Object sender, EventArgs e)
{
  //Application
  //Request
  //User
  //Session
  //Response
}

protected void Global_Error(Object sender, EventArgs e)
{
  //Application
  //Request
  //User
  //Session
  //Response
}

protected void Application_End(Object sender, EventArgs e)
{
  //Application
  //Request
  //User
  //Session
  //Response
}