It makes sense to have the promise chain begin in a new thread from Promise::new(), however beyond that the continuations themselves shouldn't be in separate threads of their own. They should all run on the originating thread where the Promise was created.
Apart from the thread locality of the continuations, the idea of creating a separate thread for each continuation is expensive. These aren't green threads, and so I'm afraid this Promise implementation will not scale well when put to the test.