Fix Issue #3964

The code is longish but rather straightforward: if a multi-line promiser is passed, it is abbreviated by taking the first and last line an joining them with `...`.  The lines are also truncated to the first (resp. last) 19 characters.