I'll put AOP idea in my backlog and investigate it later. It could make the code unnecessary complex in this case, but it could help us to get rid of the error-handling block duplicated in every Agent method:

    if (err) {
      done(err);
      return;
    }