Better promise spike. Needs tests.