use weakmap for router if available, continue delivery until no changes for dirty-check mode