How about:

    def fromTry[T](result: Try[T]): Promise[T] = new impl.Promise.KeptPromise[T](result)

and then change "def success" to call "fromTry(Success(result))" and "def failure" to call "fromTry(Failure(t))"