UNPKG

nanomessage-rpc

Version:
32 lines (27 loc) 683 B
import eos from 'end-of-stream' export function useSocket (socket, onCloseDestroyStream = true) { return { send (buf) { if (socket.destroyed) return socket.write(buf) }, subscribe (next) { socket.on('data', next) return () => socket.removeListener('data', next) }, open () { eos(socket, () => { this .close() .catch(err => process.nextTick(() => this.ee.emit('error', err))) }) }, close () { return new Promise(resolve => { if (socket.destroyed || !onCloseDestroyStream) return resolve() eos(socket, () => resolve()) socket.destroy() }) } } }