BUG: Web/Cart/${sessionKey}/Tickets

What Happens

When Web/Cart/${sessionKey}/Tickets POSTing this endpoint if the request body is formed

```

{

   "NumberOfSeats": 4,

   "PerformanceId": 1,

   "PriceType" : "1,1,2,3",

  "Unseated": true

}

```

Where one of the PriceType ids doesn't exist the hangs for some time and then returns an error:

{
"Code": null,
"Description": "TESSITURA_SEATSERVER_CONNECTION_EXCEPTION: Unable to connect to SeatServer at 10.1.2.13:8097. SeatServer may not be running. (SeatServerUnreachable: Unable to connect to the Seat Server.)",
"Details": "TESSITURA_SEATSERVER_CONNECTION_EXCEPTION: Unable to connect to SeatServer at 10.1.2.13:8097. SeatServer may not be running. (SeatServerUnreachable: Unable to connect to the Seat Server.) at Tessitura.Service.DataAccess.Service.SeatServer.SeatServerConnection.CreateConnection()\r\n at Tessitura.Service.DataAccess.Service.SeatServer.SeatServerConnection..ctor(String seatServerIP, String seatServerPort, String readTimeout, String maxConnections)\r\n at Tessitura.Service.DataAccess.Service.Web.SeatServerTicketer.GetSeatServerConnection()\r\n at Tessitura.Service.DataAccess.Service.Web.SeatServerTicketer.ReleaseSeats(SeatRequestEntity seatRequest)\r\n at Tessitura.Service.DataAccess.Repositories.Web.CartTicketingRepository.ProcessSeatRequest(SeatRequestEntity seatRequest)\r\n at Tessitura.Service.DataAccess.Repositories.Web.CartTicketingRepository.ReserveTickets(String sessionKey, ReserveTicketsRequestEntity request, Nullable`1 lineItemId)\r\n at Tessitura.Service.DataAccess.Repositories.Web.CartRepository.ReserveTickets(String sessionKey, ReserveTicketsRequestEntity request, Nullable`1 lineItemId)\r\n at Tessitura.Service.Impl.Web.CartService.ReserveTickets(String sessionKey, ReserveTicketsRequestEntity request, String lineItemId)\r\n at Tessitura.Service.Web.Controllers.Web.CartController.<>c__DisplayClass10_0.<ReserveTickets>b__0()\r\n at Tessitura.Service.Web.Controllers.Base.BaseController.RunInTransaction[T](Func`1 func)\r\n at Tessitura.Service.Web.Controllers.Web.CartController.ReserveTickets(String sessionKey, ReserveTicketsRequest request)\r\n at lambda_method(Closure , Object , Object[] )\r\n at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass6_1.<GetExecutor>b__3(Object instance, Object[] methodParameters)\r\n at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken)\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncCore>d__1.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Filters.ActionFilterAttribute.<ExecuteActionFilterAsyncCore>d__5.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__5.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Filters.AuthorizationFilterAttribute.<ExecuteAuthorizationFilterAsyncCore>d__3.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Controllers.ExceptionFilterResult.<ExecuteAsync>d__6.MoveNext()\r\nUnable to connect to the Seat Server.\r\n at Tessitura.Service.DataAccess.Service.SeatServer.SeatServerConnectionImp.Connect()\r\n at Tessitura.Service.DataAccess.Service.SeatServer.SeatServerConnection.CreateConnection()A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond 10.1.2.13:8097\r\n at System.Net.Sockets.TcpClient..ctor(String hostname, Int32 port)\r\n at Tessitura.Service.DataAccess.Service.SeatServer.SeatServerConnectionImp.Connect()",
"ErrorPath": null
}

What Should Happen:

The returned error should be along the lines of  'PRICE_TYPE_DOES_NOT_EXIST' and reservation should fail. The error should be returned quickly.