Copyright (c) 2012-2013 TJ Holowaychuk Copyright (c) 2015 Tiancheng "Timothy" Gu Copyright (c) 2015 Andreas Lubbe