Fix unhandled rejection issue with connectToPersistentSubscription #44

This commit is contained in:
Nicolas Dextraze 2017-06-30 18:54:25 -07:00
parent 1d21facd2c
commit 6634dee5f3
3 changed files with 17 additions and 13 deletions

View File

@ -519,7 +519,7 @@ EventStoreNodeConnection.prototype.subscribeToAllFrom = function(
* @param {UserCredentials} [userCredentials]
* @param {number} [bufferSize]
* @param {boolean} [autoAck]
* @return {EventStorePersistentSubscription}
* @return {Promise<EventStorePersistentSubscription>}
*/
EventStoreNodeConnection.prototype.connectToPersistentSubscription = function(
stream, groupName, eventAppeared, subscriptionDropped, userCredentials, bufferSize, autoAck
@ -536,9 +536,7 @@ EventStoreNodeConnection.prototype.connectToPersistentSubscription = function(
var subscription = new EventStorePersistentSubscription(
groupName, stream, eventAppeared, subscriptionDropped, userCredentials, this._settings.log,
this._settings.verboseLogging, this._settings, this._handler, bufferSize, autoAck);
subscription.start();
return subscription;
return subscription.start();
};
/**
@ -571,7 +569,7 @@ EventStoreNodeConnection.prototype.createPersistentSubscription = function(strea
* @public
* @param {string} stream
* @param {string} groupName
* @param {string} settings
* @param {PersistentSubscriptionSettings} settings
* @param {UserCredentials} [userCredentials]
* @returns {Promise.<PersistentSubscriptionUpdateResult>}
*/

View File

@ -35,11 +35,12 @@ EventStorePersistentSubscriptionBase.prototype.start = function() {
this._stopped = false;
var self = this;
this._startSubscription(this._subscriptionId, this._streamId, this._bufferSize, this._userCredentials,
return this._startSubscription(this._subscriptionId, this._streamId, this._bufferSize, this._userCredentials,
this._onEventAppeared.bind(this), this._onSubscriptionDropped.bind(this), this._settings)
.then(function(subscription) {
console.log('Subscription started.');
self._subscription = subscription;
return self;
});
};
@ -78,6 +79,7 @@ EventStorePersistentSubscriptionBase.prototype.fail = function(events, action, r
this._subscription.notifyEventsFailed(ids, action, reason);
};
//TODO: this should return a promise
EventStorePersistentSubscriptionBase.prototype.stop = function() {
if (this._verbose) this._log.debug("Persistent Subscription to %s: requesting stop...", this._streamId);
this._enqueueSubscriptionDropNotification(SubscriptionDropReason.UserInitiated, null);

View File

@ -22,7 +22,7 @@ module.exports = {
},
//TODO: Update Persistent Subscription
'Test ConnectTo Persistent Subscription': function(test) {
test.expect(2);
test.expect(3);
var _doneCount = 0;
function done(err) {
test.ok(!err, err ? err.stack : '');
@ -36,12 +36,16 @@ module.exports = {
function subscriptionDropped(connection, reason, error) {
done(error);
}
var subscription = this.conn.connectToPersistentSubscription(testStreamName, 'consumer-1', eventAppeared, subscriptionDropped);
this.conn.appendToStream(testStreamName, client.expectedVersion.any, [createRandomEvent()])
.then(function () {
done();
})
.catch(done);
var self = this;
this.conn.connectToPersistentSubscription(testStreamName, 'consumer-1', eventAppeared, subscriptionDropped)
.then(function(subscription) {
test.ok(subscription, "Subscription is null.");
return self.conn.appendToStream(testStreamName, client.expectedVersion.any, [createRandomEvent()]);
})
.then(function () {
done();
})
.catch(done);
},
'Test Delete Persistent Subscription': function(test) {
this.conn.deletePersistentSubscription(testStreamName, 'consumer-1', adminCredentials)