code: func (ah *Accounting) doMetrics(price int64, size uint32, err error) {
  	if price > 0 {
  		mBalanceCredit.Inc(price)
  		mBytesCredit.Inc(int64(size))
  		mMsgCredit.Inc(1)
  		if err != nil {
  			// increase the number of times a remote node has been dropped due to "overdraft"
  			mPeerDrops.Inc(1)
  		}
  	} else {
  		mBalanceDebit.Inc(price)
  		mBytesDebit.Inc(int64(size))
  		mMsgDebit.Inc(1)
  		if err != nil {
  			// increase the number of times the local node has done an "overdraft" in respect to other nodes
  			mSelfDrops.Inc(1)
  		}
  	}
  }
docs: // record some metrics
  // this is not an error handling. `err` is returned by both `Send` and `Receive`
  // `err` will only be non-nil if a limit has been violated (overdraft), in which case the peer has been dropped.
  // if the limit has been violated and `err` is thus not nil:
  //   * if the price is positive, local node has been credited; thus `err` implicitly signals the REMOTE has been dropped
  //   * if the price is negative, local node has been debited, thus `err` implicitly signals LOCAL node "overdraft"