Stream objects have to be freed by user  

Worker Tasks still leaking memory, because "Channel" never will freed. 

g-socket.ads:1023: 
   procedure Free is new Ada.Unchecked_Deallocation
     (Ada.Streams.Root_Stream_Type'Class, Stream_Access);
   --  Destroy a stream created by one of the Stream functions above, releasing
   --  the corresponding resources. The user is responsible for calling this
   --  subprogram when the stream is not needed anymore.