old_contents: 'use strict'
  
  var request = require('./BetterRequest');
  
  class HashCacheClient {
    constructor(host, credentials, info) {
      this.host        = host
      this.credentials = credentials
      this.info        = info;
      this.linkedList  = this.linkedList.bind(this)
    }
  
    linkedList(hash, password) {
      return {
        head: () => this._get(hash, password),
        add: (head) => this._add(hash, password, head),
        setMode: (mode) => this._setModes(hash, password, mode),
        delete: () => this._delete(hash, password)
      }
    }
  
    _get(hash, password) {
      return new Promise((resolve, reject) => {
        request
          .get(this.host + '/channel/' + hash)
          .set('Authorization', this.credentials)
          .send({ password: password })
          .end((err, res) => { this._resolveRequest(err, res, resolve, reject) });
      })
    }
  
    _add(hash, password, head) {
      return new Promise((resolve, reject) => {
        request
          .put(this.host + '/channel/' + hash + '/add')
          .set('Authorization', this.credentials)
          .send({ head: head, password: password })
          .end((err, res) => { this._resolveRequest(err, res, resolve, reject) });
      })
    }
  
    _setModes(hash, password, modes) {
      return new Promise((resolve, reject) => {
        request
          .post(this.host + '/channel/' + hash)
          .set('Authorization', this.credentials)
          .send({ modes: modes, password: password })
          .end((err, res) => { this._resolveRequest(err, res, resolve, reject) });
      })
    }
  
    _delete(hash, password) {
      return new Promise((resolve, reject) => {
        request
          .delete(this.host + '/channel/' + hash)
          .set('Authorization', this.credentials)
          .end((err, res) => { this._resolveRequest(err, res, resolve, reject) });
      })
    }
  
    _resolveRequest(err, res, resolve, reject) {
      if(err)
        reject(res ? res : err.toString());
      else
        resolve(res ? res : {});
    }
  }
  
  module.exports = {
    connect: (host, username, password) => {
      var credentials = `Basic ${username}=${password}`;
      return new Promise((resolve, reject) => {
        request
          .post(host + '/register')
          .set('Authorization', credentials)
          .end((err, res) => {
            if(err)
              reject(res ? res.body.message : err.toString())
            else
              resolve(new HashCacheClient(host, credentials, res));
          })
      })
    }
  }
  
new_contents: 'use strict'
  
  var request = require('./BetterRequest');
  
  class HashCacheClient {
    constructor(host, credentials, info) {
      this.host        = host
      this.credentials = credentials
      this.info        = info;
      this.linkedList  = this.linkedList.bind(this)
    }
  
    linkedList(hash, password) {
      return {
        head: () => this._get(hash, password),
        add: (head) => this._add(hash, password, head),
        setMode: (mode) => this._setModes(hash, password, mode),
        delete: () => this._delete(hash, password)
      }
    }
  
    _get(hash, password) {
      return new Promise((resolve, reject) => {
        request
          .get(this.host + '/channel/' + hash)
          .set('Authorization', this.credentials)
          .send({ password: password })
          .end((err, res) => { this._resolveRequest(err, res, resolve, reject) });
      })
    }
  
    _add(hash, password, head) {
      return new Promise((resolve, reject) => {
        request
          .put(this.host + '/channel/' + hash + '/add')
          .set('Authorization', this.credentials)
          .send({ head: head, password: password })
          .end((err, res) => { this._resolveRequest(err, res, resolve, reject) });
      })
    }
  
    _setModes(hash, password, modes) {
      return new Promise((resolve, reject) => {
        request
          .post(this.host + '/channel/' + hash)
          .set('Authorization', this.credentials)
          .send({ modes: modes, password: password })
          .end((err, res) => { this._resolveRequest(err, res, resolve, reject) });
      })
    }
  
    _delete(hash, password) {
      return new Promise((resolve, reject) => {
        request
          .delete(this.host + '/channel/' + hash)
          .set('Authorization', this.credentials)
          .send({ password: password })
          .end((err, res) => { this._resolveRequest(err, res, resolve, reject) });
      })
    }
  
    _resolveRequest(err, res, resolve, reject) {
      if(err)
        reject(res ? res : err.toString());
      else
        resolve(res ? res : {});
    }
  }
  
  module.exports = {
    connect: (host, username, password) => {
      var credentials = `Basic ${username}=${password}`;
      return new Promise((resolve, reject) => {
        request
          .post(host + '/register')
          .set('Authorization', credentials)
          .end((err, res) => {
            if(err)
              reject(res ? res.body.message : err.toString())
            else
              resolve(new HashCacheClient(host, credentials, res));
          })
      })
    }
  }
  
subject: Fix missing password for channel deletion in HashCacheClient