Better promise usage for viewmodels