[Promise, PromiseTests] - Refactored to use generics to preserve type information