Refactoring: using the existing JoinedDeferrable

to keep track of when to call monitoring.end_of_chain!