public async Task CancelingTheTaskShouldCancelTheOperation()
        {
            SqlTaskStatus         expectedStatus = SqlTaskStatus.Canceled;
            DatabaseOperationStub operation      = new DatabaseOperationStub();

            operation.TaskResult = new TaskResult
            {
            };
            SqlTask sqlTask = new SqlTask(new TaskMetadata(), operation.FunctionToRun, operation.FunctionToCancel);

            Assert.Equal(sqlTask.TaskStatus, SqlTaskStatus.NotStarted);

            Task taskToVerify = sqlTask.RunAsync().ContinueWith(task => {
                Assert.Equal(sqlTask.TaskStatus, expectedStatus);
                Assert.Equal(sqlTask.IsCancelRequested, true);
                Assert.True(sqlTask.Duration > 0);
            });

            Assert.Equal(sqlTask.TaskStatus, SqlTaskStatus.InProgress);
            Thread.Sleep(1000);
            sqlTask.Cancel();
            await taskToVerify;
        }