Add Promise<T>::done() calls at the end of promise chains

Fix exceptions being lost into the aether.