Refactored local::promise to be standard conformant

Does it make sense to delay the allocation? I can't think of a use case where the allocation wouldn't be needed at some point after all.