public virtual Task<object> ExecuteScalarAsync(CancellationToken cancellationToken)
{
if (cancellationToken.IsCancellationRequested)
{
return ADP.CreatedTaskWithCancellation<object>();
}
else
{
CancellationTokenRegistration registration = new CancellationTokenRegistration();
if (cancellationToken.CanBeCanceled)
{
registration = cancellationToken.Register(CancelIgnoreFailure);
}
try
{
return Task.FromResult<object>(ExecuteScalar());
}
catch (Exception e)
{
registration.Dispose();
return Task.FromException<object>(e);
}
}
}