       def init(state) do
         module_path = Path.join([__DIR__, @js_path])
         cmd = 'node #{:code.priv_dir(:js_gen_server)}/genserver.js #{module_path}'
-        port = :erlang.open_port({:spawn, cmd}, [{:packet, 4}, :nouse_stdio])
+        port = :erlang.open_port({:spawn, cmd}, [{:packet, 4}, :nouse_stdio, :exit_status])
 
         send_command(port, %{type: "init", state: state, fns: unquote(fns)})
 

            {:noreply, %{state | tasks: Map.put(state.tasks, ref, counter)}}
        end
      end
      def handle_info({ref, response}, state) when is_reference(ref) do
        case state.tasks[ref] do
          nil ->

        {:noreply, state}
      end

      # Handle data message
      # response -> return back out to waiting callers
      # call -> initiate Elixir Task
      def handle_info({port, {:data, msg}}, %{port: port}=state) do
        case Poison.decode!(msg) do
          %{"type" => "response", "counter" => counter, "response" => response } ->
