Finalizers for shared values

It would be great if it was possible to:

val database by shared {
    Database.connect()
        .also { cleanUp("…") { it.close() } }
}