private static bool IsRethrowOrEmitException(IIMOwinOptions options, IDictionary<string, object> environment, Exception ex) { var exString = ex.ToString(); switch (options.ErrorHandlingPolicy) { case ErrorHandlingPolicy.ParseReturnStatusCodeException: environment.ParseReturnStatusCodeException(ex); return false; case ErrorHandlingPolicy.ReturnInternalServerError: environment.EmitInternalServerError(); environment.EmitStringMessage("500 InternalServerError"); return false; case ErrorHandlingPolicy.ReturnInternalServerErrorIncludeErrorDetails: environment.EmitInternalServerError(); environment.EmitStringMessage(exString); return false; default: environment.EmitInternalServerError(); return true; } }