История изменений
Исправление dib2, (текущая версия) :
вообще вопрос уже риторический, решил простым коллбэком (схематично):
function getConn<T>(cb: (conn: Connection)=>Promise<T>): Promise<T> {
var promise = new Promise<T>((resolve, reject)=> {
pool.getConnection((err, conn)=> {
if (err) reject(err);
else {
log.debug('connected ', conn.threadId);
cb(conn).then((rv)=> {
log.debug('resolve release ', conn.threadId, rv);
conn.release();
resolve(rv);
}, (err)=> {
log.error('reject release ', conn.threadId, err);
conn.release();
reject(err);
});
}
});
});
return promise;
}
Исправление dib2, :
вообще вопрос уже риторический, решил простым коллбэком (схематично):
function getConn<T>(cb: (conn: Connection)=>Promise<T>): Promise<T> {
var promise = new Promise<T>((resolve, reject)=> {
pool.getConnection((err, conn)=> {
if (err) reject(err);
else {
log.debug('connected ', conn.threadId);
cb(conn).then((rv)=> {
log.debug('resolve release ', conn.threadId, rv);
conn.release();
resolve(rv);
}, (err)=> {
log.error('reject release ', conn.threadId, err);
conn.release();
reject(err);
});
}
});
});
return promise;
}
Исходная версия dib2, :
вообще вопрос уже риторический, решил простым коллбэком (схематично):
function getConn<T>((conn: Connection)=>Promise<T>): Promise<T> {
var promise = new Promise<T>((resolve, reject)=> {
pool.getConnection((err, conn)=> {
if (err) reject(err);
else {
log.debug('connected ', conn.threadId);
cb(conn).then((rv)=> {
log.debug('resolve release ', conn.threadId, rv);
conn.release();
resolve(rv);
}, (err)=> {
log.error('reject release ', conn.threadId, err);
conn.release();
reject(err);
});
}
});
});
return promise;
}