add promise.fold