Fix viewlist to use promises correctly

A viewlist wasn't getting properly populated before.  This also switches the list update to use splice for in-place updates.