|  | @@ -85,38 +85,40 @@ module.exports = {
 | 
	
		
			
				|  |  |  	initializeStation: function(stationId, cb) {
 | 
	
		
			
				|  |  |  		if (typeof cb !== 'function') cb = ()=>{};
 | 
	
		
			
				|  |  |  		let _this = this;
 | 
	
		
			
				|  |  | -		_this.getStation(stationId, (err, station) => {
 | 
	
		
			
				|  |  | -			if (!err) {
 | 
	
		
			
				|  |  | -				if (station) {
 | 
	
		
			
				|  |  | -					let notification = notifications.subscribe(`stations.nextSong?id=${station._id}`, _this.skipStation(station._id), true);
 | 
	
		
			
				|  |  | -					if (!station.paused ) {
 | 
	
		
			
				|  |  | -						/*if (!station.startedAt) {
 | 
	
		
			
				|  |  | -						 station.startedAt = Date.now();
 | 
	
		
			
				|  |  | -						 station.timePaused = 0;
 | 
	
		
			
				|  |  | -						 cache.hset('stations', stationId, station);
 | 
	
		
			
				|  |  | -						 }*/
 | 
	
		
			
				|  |  | -						if (station.currentSong) {
 | 
	
		
			
				|  |  | -							let timeLeft = ((station.currentSong.duration * 1000) - (Date.now() - station.startedAt - station.timePaused));
 | 
	
		
			
				|  |  | -							if (isNaN(timeLeft)) timeLeft = -1;
 | 
	
		
			
				|  |  | -							if (station.currentSong.duration * 1000 < timeLeft || timeLeft < 0) {
 | 
	
		
			
				|  |  | -								this.skipStation(station._id)((err, station) => {
 | 
	
		
			
				|  |  | -									cb(err, station);
 | 
	
		
			
				|  |  | -								});
 | 
	
		
			
				|  |  | -							} else {
 | 
	
		
			
				|  |  | -								notifications.schedule(`stations.nextSong?id=${station._id}`, timeLeft);
 | 
	
		
			
				|  |  | -								cb(null, station);
 | 
	
		
			
				|  |  | -							}
 | 
	
		
			
				|  |  | -						} else {
 | 
	
		
			
				|  |  | -							_this.skipStation(station._id)((err, station) => {
 | 
	
		
			
				|  |  | -								cb(err, station);
 | 
	
		
			
				|  |  | -							});
 | 
	
		
			
				|  |  | -						}
 | 
	
		
			
				|  |  | -					} else {
 | 
	
		
			
				|  |  | -						notifications.unschedule(`stations.nextSong?id${station._id}`);
 | 
	
		
			
				|  |  | -						cb(null, station);
 | 
	
		
			
				|  |  | -					}
 | 
	
		
			
				|  |  | -				} else cb("Station not found");
 | 
	
		
			
				|  |  | -			} else cb(err);
 | 
	
		
			
				|  |  | +		async.waterfall([
 | 
	
		
			
				|  |  | +			(next) => {
 | 
	
		
			
				|  |  | +				_this.getStation(stationId, next);
 | 
	
		
			
				|  |  | +			},
 | 
	
		
			
				|  |  | +			(station, next) => {
 | 
	
		
			
				|  |  | +				if (!station) return next('Station not found.');
 | 
	
		
			
				|  |  | +				notifications.subscribe(`stations.nextSong?id=${station._id}`, _this.skipStation(station._id), true);
 | 
	
		
			
				|  |  | +				if (station.paused) {
 | 
	
		
			
				|  |  | +					notifications.unschedule(`stations.nextSong?id${station._id}`);
 | 
	
		
			
				|  |  | +					return next(true, station);
 | 
	
		
			
				|  |  | +				}
 | 
	
		
			
				|  |  | +				next(null, station);
 | 
	
		
			
				|  |  | +			},
 | 
	
		
			
				|  |  | +			(station, next) => {
 | 
	
		
			
				|  |  | +				if (!station.currentSong) {
 | 
	
		
			
				|  |  | +					return _this.skipStation(station._id)((err, station) => {
 | 
	
		
			
				|  |  | +						if (err) return next(err);
 | 
	
		
			
				|  |  | +						return next(true, station);
 | 
	
		
			
				|  |  | +					});
 | 
	
		
			
				|  |  | +				}
 | 
	
		
			
				|  |  | +				let timeLeft = ((station.currentSong.duration * 1000) - (Date.now() - station.startedAt - station.timePaused));
 | 
	
		
			
				|  |  | +				if (isNaN(timeLeft)) timeLeft = -1;
 | 
	
		
			
				|  |  | +				if (station.currentSong.duration * 1000 < timeLeft || timeLeft < 0) {
 | 
	
		
			
				|  |  | +					this.skipStation(station._id)((err, station) => {
 | 
	
		
			
				|  |  | +						next(err, station);
 | 
	
		
			
				|  |  | +					});
 | 
	
		
			
				|  |  | +				} else {
 | 
	
		
			
				|  |  | +					notifications.schedule(`stations.nextSong?id=${station._id}`, timeLeft);
 | 
	
		
			
				|  |  | +					next(null, station);
 | 
	
		
			
				|  |  | +				}
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +		], (err, station) => {
 | 
	
		
			
				|  |  | +			if (err && err !== true) return cb(err);
 | 
	
		
			
				|  |  | +			cb(null, station);
 | 
	
		
			
				|  |  |  		});
 | 
	
		
			
				|  |  |  	},
 | 
	
		
			
				|  |  |  
 |