public void Setup()
    {
        saga = new BookingChangePolicy
        {
            Data = new BookingChangePolicyData()
        };
        context = new TestableMessageHandlerContext();

        bookedFlightWasChanged = new BookedFlightWasChanged
        {
            BookingReferenceId = bookingReferenceId,
            FlightNumber       = "UA890",
            ReasonForChange    = "Aircraft type was changed from Boeing 787 to Boeing 777"
        };
    }
    public async Task Handle(BookedFlightWasChanged message, IMessageHandlerContext context)
    {
        Data.IsFlightChanged    = true;
        Data.BookingReferenceId = message.BookingReferenceId;

        if (Data.CanCompleteSaga())
        {
            MarkAsComplete();
            return;
        }

        await context.Send(
            new NotifyCustomerAboutFlightChange
        {
            BookingReferenceId = message.BookingReferenceId,
            ReasonForChange    = message.ReasonForChange
        })
        .ConfigureAwait(false);

        await RequestTimeout(context, TimeSpan.FromSeconds(15), new CancellationGracePeriodElapsed()).ConfigureAwait(false);
    }