const { Promise, coroutine } = require('bluebird');
function Transaction() {
this.payload = '';
}
Transaction.prototype = {
wrap: function () {
return '<XML>' + this.payload + '</XML>';
},
addRequest: function (str) {
this.payload += str
return this;
},
send: coroutine(function* () {
const req = this.wrap(this.payload)
const res = yield talkToCocc(req);
return {
sentPayload: req,
response: res
}
})
}
function talkToCocc (payload) {
return Promise.resolve(200);
}
const trans = new Transaction()
trans
.addRequest('foo') // also tried .then(val => val)
.addRequest('bar')
.send()
.then(res => {
console.log(res);
})