public override Task OpenAsync(CancellationToken cancellationToken) { registerConnectionCancellationCallback(cancellationToken); SetSession(); return(SfSession.OpenAsync(cancellationToken).ContinueWith( previousTask => { if (previousTask.IsFaulted) { // Exception from SfSession.OpenAsync Exception sfSessionEx = previousTask.Exception; _connectionState = ConnectionState.Closed; logger.Error("Unable to connect", sfSessionEx.InnerException); throw new SnowflakeDbException(sfSessionEx.InnerException, SFError.INTERNAL_ERROR, "Unable to connect"); } else if (previousTask.IsCanceled) { _connectionState = ConnectionState.Closed; logger.Debug("Connection canceled"); } else { logger.Debug("All good"); // Only continue if the session was opened successfully OnSessionEstablished(); } }, cancellationToken)); }
public override Task OpenAsync(CancellationToken cancellationToken) { if (cancellationToken.IsCancellationRequested) { return(Task.FromCanceled(cancellationToken)); } SetSession(); return(SfSession.OpenAsync(cancellationToken).ContinueWith(t => OnSessionEstablished(), cancellationToken)); }