fixed a problem with  when more than one promises failed, add preliminary iterator support