Eigentlich war @Quentine genau das Richtige...
Es ist "sozusagen" ein Fehler in mysql2
, ich verwende sort-of, weil https://github.com/sidorares/node- mysql2/issues/902
schlägt das Entwicklerteam von mysql2
vor ist in Ordnung. damit.
Es ist ein Problem mit der Art und Weise, wie mysql2.pool den Aufruf an die erstellte Verbindung weiterleitet, die die Ausnahme vom Wrapping Promise nicht weiterleitet.
Am Ende habe ich meine eigene Wrapping-Funktion erstellt, um die Verbindung zu erstellen und den Aufruf auszuführen, der in der richtigen Promise-Behandlung verpackt ist.
import mysql = require('mysql2');
private async queryDB(query:string, useExecute: boolean = false, ...args:any[]) : Promise<any[]>
{
return new Promise<any[]>((resolve, reject)=>{
for(var i = 0; i < args.length; ++i)
{
if(args[i]===undefined)
args[i] = null;
}
this.dbPool.getConnection((err, conn)=>{
if(err){
reject(err);
return;
}
let cb = function(err: mysql.QueryError, results: any[], fields: mysql.FieldPacket[]) {
conn.release();
if(err)
{
reject(err);
return;
}
resolve(results);
}
if(useExecute)
conn.execute(query, args, cb);
else
conn.query(query, args, cb);
});
});
}