public async Task ExecuteActionFilterAsync_IfOnActionExecutedReplacesException_ThrowsNewException()
        {
            // Arrange
            Exception expectedReplacementException = CreateException();

            using (HttpRequestMessage request = new HttpRequestMessage())
            {
                Mock <ActionFilterAttribute> mock = new Mock <ActionFilterAttribute>();
                mock.CallBase = true;
                mock
                .Setup(f => f.OnActionExecuted(It.IsAny <HttpActionExecutedContext>()))
                .Callback <HttpActionExecutedContext>((c) => c.Exception = expectedReplacementException);
                IActionFilter product = mock.Object;

                HttpActionContext context = ContextUtil.CreateActionContext();
                Func <Task <HttpResponseMessage> > continuation = () =>
                                                                  CreateFaultedTask <HttpResponseMessage>(CreateException());

                // Act
                Exception exception = await Assert.ThrowsAsync <InvalidOperationException>(
                    () => product.ExecuteActionFilterAsync(context, CancellationToken.None, continuation)
                    );

                // Assert
                Assert.Same(expectedReplacementException, exception);
            }
        }