/// <inheritdoc />
        public IDisposable Transaction(SCardReaderDisposition disposition)
        {
            var handle = CardHandle.Handle;

            _api.BeginTransaction(handle)
            .ThrowIfNotSuccess();

            return(DisposeAction.Create(() => _api
                                        .EndTransaction(handle, disposition)
                                        .ThrowIfNotSuccess()));
        }