added spread() so that then() now always gets a monolithic value